ITEM 3(d)
Escreva uma função de nome duplicaLista que recebe um apontador ini para uma lista encadeada com cabeça e cria uma nova lista que é cópia da lista ini. A função deve retornar o endereço da primeira célula da nova lista.
UMA SOLUÇÃO ITERATIVA Celula * duplicaLista(Celula *ini) { Celula *ini2, *p1, *p2; ini2 = (Celula*) mallocSafe(sizeof(Celula)); p1 = ini->prox; p2 = ini2; while (p1 != NULL) { p2->prox = (Celula*) mallocSafe(sizeof(Celula)); p2 = p2->prox; p2->conteudo = p1->conteudo; p1 = p1->prox; } p2->prox = NULL; return ini2; } UMA SOLUÇÃO RECURSIVA Celula * duplicaLista(Celula *ini) { Celula *ini2; if (ini == NULL) return NULL; ini2 = (Celula*) mallocSafe(sizeof(Celula)); ini2->conteudo = ini->conteudo; ini2->prox = duplicaLista(ini->prox); return ini2; }