Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ricardo gomes araujo

Lista encadeadas - Inverter lista

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho q ficaria assim:

 

Lista* inverte (Lista* l) {

   Lista* p;
   Lista* q = NULL;

   for ( p = l; p; p = p->prox)q = lista_insere(q, p->info);
   return q;
}

 

testa ae e me fala;

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.