Está en la página 1de 8

CODIGO 26-04-2021 OPERACIONES LISTAS SIMPLES ENLAZADAS

#include <iostream>
#include <windows.h>

using namespace std;

struct nodo
{
string nombre;
int edad;
struct nodo *sig;
};

struct nodo *cab,*fin,*p,*aux;

void inic_lista()
{
cab=NULL;
fin=NULL;
}

void menu_principal()
{
//endl comsndo salti de linea
//cout<< comando salida de datos por pantalla
cout<<"\t\t\tMENU LISTAS SIMPLES"<<endl;
cout<<"\t1.Insertar"<<endl;
cout<<"\t2.Listar"<<endl;
cout<<"\t3.Eliminar"<<endl;
cout<<"\t4.Salir"<<endl;
cout<<"Elija opcion---->";
}
void menu_insertar()
{
cout<<"\t\t\tMENU INSERTAR"<<endl;
cout<<"\t1.Insertar_Inicio"<<endl;
cout<<"\t2.Insertar_final"<<endl;
cout<<"\t3.Insertar_Posicion"<<endl;
cout<<"\t4.Retornar"<<endl;
cout<<"Elija opcion---->";
}

void menu_eliminar()
{
cout<<"\t\t\tMENU INSERTAR"<<endl;
cout<<"\t1.Elimiar_Inicio"<<endl;
cout<<"\t2.Eliminar_final"<<endl;
cout<<"\t3.Eliminar_Posicion"<<endl;
cout<<"\t4.Retornar"<<endl;
cout<<"Elija opcion---->";
}

//Insertando al inicio
void insert_inicio()
{
string auxNom;
int auxEdad;
struct nodo *nuevo;
nuevo=new struct nodo;
nuevo->sig=NULL;
cout<<"Nombre-->";
cin>>auxNom;
cout<<"Edad--Z";
cin>>auxEdad;
if(nuevo==NULL)
{
cout<<"No hay espacio en al MEMORIA"<<endl;
}
else
{
if(cab==NULL && fin==NULL)
{
nuevo->nombre=auxNom;
nuevo->edad=auxEdad;
nuevo->sig=NULL;
cab=nuevo;
fin=nuevo;
cout<<"Primer Nodo insertado en lista"<<endl;
}
else
{
nuevo->nombre=auxNom;
nuevo->edad=auxEdad;
nuevo->sig=NULL;
nuevo->sig=cab;
cab=nuevo;
cout<<"Nodo insertado al inicio lista"<<endl;
}
}
}

void list_datos()
{
p=cab;
while(p!=NULL)
{
cout<<p->nombre<<'\t'<<p->edad<<endl;
p=p->sig;
}

//insertando al final
void insert_fin()
{
string auxNom;
int auxEdad;
struct nodo *nuevo;
nuevo=new struct nodo;
nuevo->sig=NULL;
cout<<"Nombre-->";
cin>>auxNom;
cout<<"Edad--Z";
cin>>auxEdad;
if(nuevo==NULL)
{
cout<<"No hay espacio en al MEMORIA"<<endl;
}
else
{
if(cab==NULL && fin==NULL)
{
nuevo->nombre=auxNom;
nuevo->edad=auxEdad;
nuevo->sig=NULL;
cab=nuevo;
fin=nuevo;
cout<<"Primer Nodo insertado en lista"<<endl;
}
else
{
nuevo->nombre=auxNom;
nuevo->edad=auxEdad;
nuevo->sig=NULL;
fin->sig=nuevo;
fin=nuevo;
cout<<"Nodo insertado al final lista"<<endl;
}
}
}
void insert_pos()
{
bool control=false;
string auxNom,dato;
int auxEdad;
struct nodo *nuevo;
nuevo=new struct nodo;
nuevo->sig=NULL;
cout<<"Nombre-->";
cin>>auxNom;
cout<<"Edad--Z";
cin>>auxEdad;
cout<<"Ingrese nombre donde se insertara--";
cin>>dato;
if(nuevo==NULL)
{
cout<<"No hay espacio en al MEMORIA"<<endl;
}
else
{
p=cab;
while(p!=NULL)
{
if(p->nombre==dato)
{
nuevo->nombre=auxNom;
nuevo->edad=auxEdad;
nuevo->sig=NULL;
nuevo->sig=p->sig;
p->sig=nuevo;
cout<<"Nodo insertado entre posiciones de la lista"<<endl;
control=true;
}
p=p->sig;
}
if(!control)
cout<<dato<< "No existe en la lista"<<endl;
else
list_datos();
}
}

//eliminar al inicio
void elimiar_inicio()
{
p=cab;
cout<<cab->sig;
if(cab==NULL && fin==NULL)
{
p=cab;
cab=p->sig;
p->sig=NULL;
delete p;
cout<<endl;
list_datos();
}
else
{
cout<<"LIsta Vacia"<<endl;
}

void eliminar_final()
{
p=cab;
aux=p;
while(p!=NULL)
{
aux=p;
p=p->sig;
if(p->sig==NULL)
{
fin=aux;
fin->sig=NULL;
delete p;
break;
}
}
}

void eliminar_pos()
{
bool control=false;
string nom1;
cout<<"Nombre del nodo a eliminar-->";
cin>>nom1;
p=cab;
aux=p;
while(p!=NULL)
{
if(p->nombre==nom1)
{
cout<<"Dato encontrado"<<endl;
aux->sig=p->sig;
p->sig=NULL;
control=true;
delete p;
break;
}
aux=p;
p=p->sig;
}
if(!control)
{
cout<<"Dato no se encuentra en lista"<<endl;
}
else
{
cout<<endl;
list_datos();
}
}
//principsl
int main()
{
int op=0,op1=0,op2=0;
inic_lista();
do
{
menu_principal();
cin>>op;
// system("cls") comando para limpiar pantalla
system("cls");
switch(op)
{
case 1:
{
do
{
menu_insertar();
cin>>op1;
system("cls");
switch(op1)
{
case 1:
{
insert_inicio();
break;
}
case 2:
{
insert_fin();
break;
}
case 3:
{
insert_pos();
break;
}
case 4:break;

default:
{
cout<<"Opcion no valida"<<endl;
}
}
}while(op1!=4);

break;
}
case 2:
{
list_datos();
break;
}
case 3:
{
do
{
menu_eliminar();
cin>>op2;
system("cls");
switch(op2)
{
case 1:
{
elimiar_inicio();
break;
}
case 2:
{
eliminar_final();
break;
}
case 3:
{
eliminar_pos();
break;
}
case 4:break;

default:
{
cout<<"Opcion no valida"<<endl;
}
}
}while(op2!=4);
}
case 4:break;
default:
cout<<"Opcion no vslida"<<endl;

}
}while(op!=4);
return 0;
}

También podría gustarte