Está en la página 1de 4

//Nodo.

cpp
#include <iostream.h>
#include <stdlib.h>
#include <iomanip.h>
#include "Nodo1.h"
//constructor
Nodo1::Nodo1()
{
tope=NULL;
sgte=0;
}
//insertar a la pila
void Nodo1::pusch(int insert)
{
//incrementa tope
Nodo1 *elemento= new Nodo1();
elemento ->info = insert;
elemento ->sgte = tope;
tope = elemento;
}
bool Nodo1::pilavacia()
{
if(tope==NULL)
return true;
else
return false;
}
void Nodo1::comparar(Nodo1*temp)
{
Nodo1 *obj;
Nodo1 objeto;
Nodo1 objeto1;
objeto=*temp;
if(pilavacia())
{
cout<<"No existen elementos a comparar";
//return *temp;
}
else
{
Nodo1 *aux= tope;
while(aux!=0)// mientras que la direccion de tope no sea cero
{
Nodo1 *element=new Nodo1();
element=tope->sgte;// cambia elemento al anterior introd
ucido
//compara la inf del ultimo y antecesor, si son iwales
if(element->info == tope->info)//para eliminar uno
{
if(objeto.pilavacia())
cout<<"error de subdesbordamient
o";
else
{
Nodo1 *aux1= new Nodo1();
aux1=tope;
tope=tope->sgte;//tope sera ahora el ant
erior
delete aux1;//elimina el ultimo tope
aux= tope;//aux ia cambio
}
}//fin del if
else
{
objeto1.pusch(tope->info);//en la nueva pila int
roduce el dato no iwal
if(objeto.pilavacia())
cout<<"error de subdesbordamient
o";
else//para eliminarlo de la pila vieja
{
Nodo1 *aux1= new Nodo1();
aux1=tope;
tope=tope->sgte;
delete aux1;
}
aux= tope;//aux ia cambio
}//fin del else
aux=aux->sgte;//a aux le ponemos lo que apunta en siguie
nte que era el tope
}//fin del while
if(aux==NULL)//cuando tope vale null, aun existe 1 dato
{
objeto1.pusch(tope->info);//insertarlo en la pila new
if(objeto.pilavacia())
cout<<"error de subdesbordamient
o";
else //eliminarlo de la pila vieja
{
Nodo1 *aux1= new Nodo1();
aux1=tope;
tope=tope->sgte;
delete aux1;
}
}//fin del if
}//fin del else
cout<<"\n Eliminando repetidos\n";
objeto1.print();
obj=&objeto1;
objeto.invertir(&objeto1);//mandamos invertir el objeto nuevo, con su di
reccion
}//fin de comparar
void Nodo1::invertir(Nodo1 * inv)
{
Nodo1 nodo;
Nodo1 inverso;
nodo=*inv;
cout <<"\n Lista de Datos Actual:\n";
tope=nodo.tope;//tope apunta al primer elemento introducida, que es ahor
a el tope
Nodo1 *temp= tope;
while(temp!=0)// mientras que la direccion de tope no sea cero
{
inverso.pusch(tope->info);//introduce en la pila final el primer
dato
if(nodo.pilavacia())
cout<<"error de subdesbordamiento";
else//elimina el dato de la pila new que teniamos
{
Nodo1 *aux1= new Nodo1();
aux1=tope;
tope=tope->sgte;//por lo que tope cambia
delete aux1;
temp=tope;//temp cambia
}
temp=temp->sgte;//temp, ahora es el anterior de tope
}
if(temp==NULL)//si temp es null, aun existe un elemento
{
if(nodo.pilavacia())
cout<<"\n No Existen Elementos\n
";
else
{
inverso.pusch(tope->info);//introducimos
el elemento en la pila final
if(nodo.pilavacia())
cout<<"error de subdesbo
rdamiento";
else//eliminamos de la pila new
{
Nodo1 *aux1= new Nodo1();
aux1=tope;
tope=tope->sgte;
delete aux1;
}
}//fin del else
}//fin del if
inverso.print(); //imprimimos la pila final
}
void Nodo1::print()
{
if(tope==NULL)
cout<<"La Lista Esta Vacia, no existen elementos"<<endl;
else
{
Nodo1 *aux= tope;
while(aux!=0)
{
cout<<"\n"<<resetiosflags(ios::left|ios::dec)<<setiosfla
gs(ios::hex|ios::right)//para darle espacios a la letra
<<setw(12)<<aux->info;
aux=aux->sgte;
}
cout<<"\n y tope apunta al elemento: "<<tope->info<<endl;
}
}
bool Nodo1::poop()
{
//disminuye tope
if(pilavacia())
{
cout<<"error de subdesbordamiento";
return false;
}
else
{
Nodo1 *aux= new Nodo1();
aux=tope;
tope=tope->sgte;
delete aux;
return true;
}
}

También podría gustarte