Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Não estou conseguindo fazer a seguinte questão:
Implementar uma função que inverta uma lista encadeada e esta função devera obedecer ao protótipo: Lista inverte (Lista l);
Segue o que consegui fazer da questão:
#include <stdio.h>
#include <stdlib.h>
typedef struct lista {
int info;
struct lista* prox;
} Lista;
Lista* lista_cria() {
return NULL;
}
Lista lista_insere (Lista l, int i) {
Lista* novo = (Lista*) malloc(sizeof(Lista));
novo->info = i;
novo->prox = l;
return novo;
}
void lista_imprime (Lista* l) {
Lista p; / variavel auxiliar para percorrer a lista */
for (p = l; p != NULL; p = p->prox)
printf("info = %d\n", p->info);
}
/ função separa /
Lista inverte (Lista l)
{
Lista p; / variável auxiliar para percorrer a lista */
Lista q; / variável auxiliar para nova lista */
int aux;
for (p = l; p != NULL ; p = p->prox)
if (p->info == NULL)
{
aux = p->prox;
p->prox = NULL;
return p;
}
}
main() {
Lista* l;
int n;
l = lista_cria();
l = lista_insere(l, 23);
l = lista_insere(l, 45);
l = lista_insere(l, 67);
l = lista_insere(l, 89);
l = lista_insere(l, 1011);
printf("\nLista:\n");
lista_imprime(l);
printf("\n***Invertendo a lista***\n");
Lista_inverte(l);
printf("\nLista depois da inversao:\n");
lista_imprime(l);
getch();
}
Alguém poderia me ajudar com a função de inverter a lista?
Carregando comentários...