EnzoFerber
(usa FreeBSD)
Enviado em 13/04/2011 - 09:13h
Olá,
http://pastebin.com/Ac3dMtgz
Esse é o codigo que fiz. Segue a explicação.
Mudei apenas 2 coisas nele:
1. coloquei um #define no inicio para padronizar o malloc() de listas, assim:
#define MALLOC(a) (a*)malloc(sizeof(a))
Ou seja, para alocar um nódulo novo da lista, basta fazer:
Lista *novo = MALLOC(Lista);
2. A função 'inversao()'.
Essa função foi escrita para o tipo de lista que ESTE programa está implementando, ou seja, uma lista que todo novo elemento é inserido no COMEÇO da lista. Assim:
Inserir(1).
Lista: 1
Inserir(2).
Lista: 2 1
Inserir(0)
Lista: 0 2 1
Para inverter a lista, basta imprimir os valores na ordem, com um loop simples, e criar uma nova lista para conter esses valores, assim:
Lista *inversao( Lista *l) {
Lista *nova = lista_cria();
Lista *p;
for ( p = l; p; p = p->prox )
nova = lista_insere(nova, p->info);
return nova;
}
Espero ter ajudado,
Qualquer dúvida é só postar denovo,
Enzo Ferber
[]'s