Lista doble base de datos
Enviado por alfonso.c • 9 de Septiembre de 2019 • Práctica o problema • 613 Palabras (3 Páginas) • 102 Visitas
#include<iostream>
using namespace std;
class Nodo
{
private:
int edad,id;
string nom,dir,tel,email;
Nodo*sig,*ant;
public:
Nodo()
{
edad=id=0;
nom=dir=tel=email=" ";
ant=sig=NULL;
}
void lee()
{
cout<<"ID: ";cin>>id;
cout<<"NOMBRE: ";fflush(stdin);getline(cin,nom);
cout<<"DIRECCION: ";fflush(stdin);getline(cin,dir);
cout<<"EMAIL: ";fflush(stdin);getline(cin,email);
cout<<"TELEFONO: ";fflush(stdin);getline(cin,tel);
cout<<"EDAD: ";cin>>edad;
}
int Id()
{
return id;
}
int Edad()
{
return edad;
}
string Nombre()
{
return nom;
}
string Direccion()
{
return dir;
}
string Email()
{
return email;
}
string Telefono()
{
return tel;
}
Nodo *Sig()
{
return sig;
}
Nodo *Ant()
{
return ant;
}
void SigApunta(Nodo *nodo)
{
sig=nodo;
}
void AntApunta(Nodo *nodo)
{
ant=nodo;
}
};
class lista
{
private:
Nodo *inicio1,*inicio2;
public:
lista()
{
inicio1=inicio2=NULL;
}
void inserta_ini_izq() //1er INSERTA
{
Nodo *nuevo=new Nodo;
nuevo->lee();
if(inicio1==NULL && inicio2==NULL)
inicio1=inicio2=nuevo;
else
{
Nodo *nuevo=new Nodo;
nuevo->lee();
if(inicio1==NULL&&inicio2==NULL)
inicio1=inicio2=nuevo;
else
{
nuevo->SigApunta(inicio1);
inicio1->AntApunta(nuevo);
inicio1=nuevo;
}
}
cout<<"\n ***INFORMACION INGRESADA*** \n";
muestra();
system("pause");
}
void inserta_ini_der() //2do INSEERTA
{
Nodo *nuevo=new Nodo;
nuevo->lee();
if(inicio1==NULL&&inicio2==NULL)
inicio1=inicio2=nuevo;
else
{
nuevo->AntApunta(inicio2);
inicio2->SigApunta(nuevo);
inicio2=nuevo;
}
cout<<"\n ***INFORMACION INGRESADA*** \n";
muestra();
system("pause");
}
void inserta_inter_derecha() //3er INSERTA
{
Nodo *nuevo=new Nodo;
nuevo->lee();
if(inicio1==NULL && inicio2==NULL)
inicio1=inicio2=nuevo;
else
{
int num;
cout<<"\nADELANTE DE QUE CONTACTO DESEA INSERTAR LA NUEVA INFORMACION (Digite Id)\?: ";
cin>>num;
Nodo *ind=inicio2;
while(ind->Id()!=num)
ind=ind->Ant();
if(ind==NULL)
cout<<"\nNO ES POSIBLE \n";
else
{
Nodo *ind2=ind->Ant();
ind->AntApunta(nuevo);
nuevo->SigApunta(ind);
nuevo->AntApunta(ind2);
ind2->SigApunta(nuevo);
}
}
cout<<"\nNODO INSERTADO\n";
muestra();
system("pause");
}
void inserta_inter_izq() //4to INSERTA
{
Nodo *nuevo=new Nodo;
nuevo->lee();
if(!inicio1&&!inicio2)
inicio1=inicio2=nuevo;
else
{
int num;
cout<<"\n Adelante de que dato quieres insetar \n";
cin>>num;
Nodo *ind=inicio1;
while(ind->Id()!=num)
ind=ind->Sig();
if(!ind)
cout<<"\n No se encontro el dato \n";
else
{
Nodo *ind2=ind->Sig();
nuevo->SigApunta(ind2);
ind->SigApunta(nuevo);
nuevo->AntApunta(ind);
ind2->AntApunta(nuevo);
}
}
system("pause");
}
void muestra()
{
if(!inicio1||!inicio2)
cout<<"\n***LISTA VACIA***\n";
else
{
Nodo *ind=inicio1;
cout<<"\n***LISTA POR LA DERECHA**\n";
while(ind)
{
cout<<ind->Id()<<"\n";
cout<<ind->Nombre()<<"\n";
cout<<ind->Edad()<<"\n";
cout<<ind->Direccion()<<"\n";
cout<<ind->Telefono()<<"\n";
cout<<ind->Email()<<"\n\n";
ind=ind->Sig();
...