20.9 Escriba un programa para crear un objeto lista enlazada de 10 caracteres, y que luego cree un segundo objeto lista que
contenga una copia de la primera lista, pero en orden inverso.
#include <iostream> using namespace std; struct nodo { char info; struct nodo *sig; }; void generarLista(nodo **inicio) { nodo *q , *fin; for(int i=0;i<5;i++) { q = new nodo; q->info = (char)(rand()%10+70); if(*inicio == NULL) { q->sig = *inicio; *inicio = q; fin = q; } else { q->sig = fin->sig; fin->sig = q; fin = q; } } } nodo *obtenerFin( nodo *inicio) { while( inicio->sig != NULL ) inicio=inicio->sig; return inicio; } nodo *EliminarFin( nodo *inicio ) { nodo *fin , *aux; fin = obtenerFin(inicio); aux=inicio; while( aux->sig != fin ) aux=aux->sig; aux->sig= fin->sig; delete fin; return inicio; } nodo *InsertarFinal( nodo *inicio ,nodo *fin, char nom) { nodo *q ; q = new nodo; q->info = nom; if(fin==NULL) { q->sig = inicio; inicio = q; fin = q; } else { q->sig = fin->sig; fin->sig = q; fin = q; } return inicio; } void mostrar(nodo *inicio) { while(inicio) { cout<<inicio->info<<" "; inicio = inicio->sig; } cout<<"\n\n\n"; } int main() { nodo *inicio , *inicio2 , *fin2; inicio = NULL; inicio2 = NULL; fin2 = NULL; generarLista(&inicio); mostrar(inicio); inicio2 = InsertarFinal(inicio2 ,fin2 , obtenerFin(inicio)->info); inicio = EliminarFin(inicio); inicio2 = InsertarFinal(inicio2 ,obtenerFin(inicio2) , obtenerFin(inicio)->info); inicio = EliminarFin(inicio); inicio2 = InsertarFinal(inicio2 ,obtenerFin(inicio2) , obtenerFin(inicio)->info); inicio = EliminarFin(inicio); inicio2 = InsertarFinal(inicio2 ,obtenerFin(inicio2) , obtenerFin(inicio)->info); inicio = EliminarFin(inicio); inicio2 = InsertarFinal(inicio2 ,obtenerFin(inicio2) , obtenerFin(inicio)->info); mostrar(inicio2); system("pause"); return 0; }
No hay comentarios.:
Publicar un comentario