//Programa Codigo C++ Listas Enlazadas
//Universidad Castro Carazo
//Curso de Estructura de Datos
#include <iostream>
#include <stdlib.h>
using namespace std;
struct nodo{
int num; //Variable entera
struct nodo *sgte; //Variable de tipo puntero
};
typedef struct nodo *Tlista;
//Insertar nodos al final de la lista.
void insertarF (Tlista &inicio, int valor)
{
Tlista temp,aux;
temp=new(struct nodo);
temp->num=valor;
temp->sgte=NULL;
if (inicio==NULL)
inicio=temp;
else
{
aux=inicio;
while (aux->sgte!=NULL)
aux=aux->sgte;
aux->sgte= temp;
}
}
// Insertar nodos al inicio de la lista
void insertarI (Tlista &inicio, int valor)
{
Tlista temp,aux;
temp=new(struct nodo);
temp->num=valor;
temp->sgte=NULL;
if (inicio==NULL)
inicio=temp;
else
{
temp->sgte=inicio;
inicio=temp;
}
}
// Imprimir la lista enlazada
void imprimir(Tlista &inicio)
{
int i=0;
Tlista ptr;
ptr=inicio;
while (ptr!=NULL)
{
cout<< ' '<<i+1 <<") "<<ptr->num <<endl;
ptr=ptr->sgte;
i++;
}
//Eliminar un nodo de la lista
void eliminarnodo (Tlista &inicio, int valor)
{
Tlista ptr,ant;
if(inicio->num==valor)
{
ptr=inicio;
inicio=inicio->sgte;
delete(ptr);
}
else
{
ant=NULL;
ptr=inicio;
while(ptr->num!=valor)
{
ant=ptr;
ptr=ptr->sgte;
}
ant->sgte=ptr->sgte;
delete (ptr);
}
}
void menu1()
{
cout<<"\n\t\tLista Enlazadas \n\n"<<endl;
cout<<"1. Insertar nodo Final "<<endl;
cout<<"2. Insertar nodo inicio "<<endl;
cout<<"3. Insertar "<<endl;
cout<<"4. Imprimir la lista "<<endl;
cout<<"5. Eliminar nodo "<<endl;
cout<<"6. Buscar nodo "<<endl;
// Si el nodo esta y que posición se encuentra
cout<<"7. Salir "<<endl;
cout<<"\n Ingrese la opción ";
}
// Modulo principal
int main()
{
Tlista inicio = NULL;
int op;
int dato;
int pos;
do
{
menu1();
cin>> op;
switch(op)
{
case 1:
cout<< "\n NUMERO A INSERTAR: "; cin>> dato;
insertarF(inicio,dato);
break;
case 2:
cout<< "\n NUMERO A INSERTAR: "; cin>> dato;
insertarI(inicio,dato);
break;
case 3:
break;
case 4:
cout<< "\n Impresion de la Lista "<<endl;
if (inicio==NULL)
cout<< "\n La lista esta vacía "<<endl;
else
imprimir(inicio);
break;
case 5:
cout<< "\n Eliminar nodo de la lista "<<endl;
if (inicio==NULL)
cout<< "\n La lista esta vacía "<<endl;
else
{
cout<< "\n Digite el número a Eliminar: ";
cin>> dato;
eliminarnodo(inicio,dato);
}
break;
case 6:
break;
}
cout<<endl;
system("pause");
system("cls");
}while (op!=6);
system("pause");
return 0;
}