Listas Enlazadas Genericas En C++
Enviado por kefer15 • 29 de Mayo de 2013 • 878 Palabras (4 Páginas) • 1.103 Visitas
#include <iostream>
using namespace std;
template <class Tipo>
class Nodo
{
public:
Tipo dato;
Nodo *siguiente;
public:
Nodo(Tipo dato,Nodo <Tipo> *sig = NULL)
{
this->dato=dato;
this->siguiente=sig;
}
~Nodo()
{
this->dato=0;
this->siguiente=NULL;
}
};
template <class Tipo>
class Lista
{
private:
Nodo <Tipo> *primero;
int tamanio;
public:
Lista()
{
primero = NULL;
tamanio = 0;
}
void insertarInicio(Tipo);
void insertarFinal(Tipo);
void insertar(Tipo,int);
void eliminar(Tipo);
void mostrar();
void buscar(Tipo);
};
template <class Tipo>
void Lista <Tipo> :: insertarInicio(Tipo elemento)
{
primero = new Nodo <Tipo> (elemento,primero);
tamanio++;
}
template <class Tipo>
void Lista <Tipo> :: insertarFinal(Tipo elemento)
{
Nodo <Tipo> *t;
Nodo <Tipo> *q = new Nodo <Tipo>(elemento,NULL);
if(primero==NULL)
{
primero = q;
tamanio++;
}
else
{
t = primero;
while(t->siguiente != NULL)
t = t->siguiente;
t->siguiente = q;
tamanio++;
}
}
template <class Tipo>
void Lista <Tipo> :: insertar(Tipo elemento, int posicion)
{
Nodo <Tipo> *t;
Nodo <Tipo> *q = new Nodo <Tipo> (elemento);
if(posicion == 1)
{
q->siguiente = primero;
primero = q;
}
else
{
t = primero;
for(int i=1;t!=NULL;i++)
{
if(i == posicion-1)
{
q->siguiente = t->siguiente;
t->siguiente = q;
return;
}
t = t->siguiente;
}
}
cout << "ERROR POSICION NO ENCONTRADA" <<endl;
}
template <class Tipo>
void Lista <Tipo> :: eliminar(Tipo elemento)
{
Nodo <Tipo> *p,*ant;
p = primero;
if(primero != NULL)
...