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