/*
Author: CARLOS MARTIN RAMIREZ GARCIA
Date: 14/10/13 20:53
Description: codigo de una lizta enlazada
ListaSimple.cpp
*/
#include<iostream>
using namespace std;
class NodoD
{
public:
int dato;
NodoD *sig;
NodoD()
{
dato=0;
sig=NULL;
}
NodoD(int dato)
{
this->dato=dato;
sig=NULL;
}
};
class ListaSimple
{
public:
NodoD *primero;
NodoD *ultimo;
ListaSimple()
{
primero=NULL;
ultimo=NULL;
}
int EstaVacia()
{
return (primero==NULL && ultimo==NULL);
}
void agregarAlprincipio(int dato)
{
if(EstaVacia())
{
NodoD *nodo;
nodo=new NodoD(dato);
primero=nodo;
ultimo=nodo;
}
else
{
NodoD *nodo;
nodo=new NodoD(dato);
nodo->sig=primero;
primero=nodo;
}
}
void agregarAlfinal(int dato)
{
if(EstaVacia())
{
NodoD *nodo;
nodo=new NodoD(dato);
primero=nodo;
ultimo=nodo;
}
else
{
NodoD *nodo;
nodo=new NodoD(dato);
ultimo->sig=nodo;
ultimo=nodo;
}
}
NodoD* buscar(int dato)
{
NodoD *nodo;
nodo=primero;
while(nodo!=NULL && nodo->dato)
{
nodo=nodo->sig;
}
return nodo;
}
void mostrarLista()
{
if(EstaVacia())
{
cout << "noexisten datos"<<endl;
return;
}
else
{
NodoD *imprime;
imprime=primero;
int i=0;
cout<<"datos"<<endl;
while(imprime!=NULL)
{
cout<<"nodo: " << imprime->dato;
cout<<"\n";
imprime=imprime->sig;
cout<<"\n\n";
i++;
}
}
}
int obtenerElemento(int indice)
{
NodoD *nodo;
int i =1;
nodo=primero;
while(nodo!=NULL && i<indice)
{
nodo=nodo->sig;
i++;
}
if(nodo!=NULL)
{
return nodo->dato;
}
else
{
cout << "Aviso nose encontro el evento: " << i << endl;
return 0XFFFFFF;
}
}
void eliminar (int dato)
{
NodoD *prev, *nodo;
nodo=primero;
prev=NULL;
while(nodo!=NULL && nodo->dato!=dato)
{
prev=nodo;
nodo=nodo->sig;
}
if(prev!=NULL && nodo != NULL)
{
prev->sig=nodo->sig;
delete nodo;
}
else if(nodo!=NULL && prev==NULL)
{
primero = nodo->sig;
primero=nodo->sig;
delete nodo;
}
}
void insertar(int dato,int indice)
{
NodoD *nodo, *prev;
int i=0;
prev=NULL;
nodo=primero;
while(nodo!=NULL && i< indice)
{
prev=nodo;
nodo=nodo->sig;
i++;
}
if(nodo!=NULL)
{
if(nodo!=primero)
{
NodoD *NuevoNodo=new NodoD(dato);
prev->sig=NuevoNodo;
NuevoNodo->sig=nodo;
}
}
else
{
cout<<"el dato se inserta en la posicion: "<< i << endl;
if(EstaVacia())
{
agregarAlprincipio(dato);
}
else
{
agregarAlfinal(dato);
}
}
}
void limpiar()
{
NodoD *nodo,*sig=NULL;
if(EstaVacia())
return;
nodo=primero;
while(nodo!=NULL)
{
sig=nodo->sig;
delete nodo;
nodo=sig;
}
primero=NULL;
ultimo=NULL;
}
~ListaSimple()
{
limpiar();
}
};
int main()
{
int inf;
ListaSimple lista;
lista.agregarAlprincipio(1);
lista.agregarAlprincipio(2);
lista.agregarAlprincipio(3);
lista.agregarAlprincipio(4);
lista.agregarAlfinal(20);
lista.mostrarLista();
inf=lista.obtenerElemento(9);
cout << "dato buscado: "<<inf<<endl;
lista.eliminar (20);
lista.mostrarLista();
lista.insertar(5,2);
lista.eliminar (3);
lista.mostrarLista();
lista.~ListaSimple();
lista.mostrarLista();
system("pause");
return 0;
}
lunes, 14 de octubre de 2013
Lista enlazada simple
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario