domingo, 26 de abril de 2009

mi tad lista jojo

espero añadirle mas caracteristicas

tad= tipo abstracto de datos

#include



using namespace std;

typedef struct nodo
{
int dato;
nodo *sig;
nodo *ant;


}tnodo;


typedef struct lista
{

int tam;
tnodo * cab;
tnodo * vent;
tnodo * ult;
}tlista;


typedef struct estudiantes

{
int id;
int cedula;
string nombre;


};
estudiantes losestudiantes;

tlista * crearlista()
{
tlista * lst =new tlista;
lst->tam =0;
lst->cab=0;
lst->vent=0;
lst->ult=0;
return lst;
}

int tamanolista(tlista *lst)
{

return lst->tam;

}

bool esvacialista(tlista *lst)

{

if(lst->tam==0)
{
return true;
}
else
{
return false;
}


}


estudiantes infolista(tlista * lst)
{
lst->vent->dato;

}

tlista * siglista (tlista *lst)
{

if(lst->tam==0)
{
return lst;
}

else if(lst->tam==1)
{
lst->vent=lst->cab;
return lst;

}

else if(lst->tam==1)
{
lst->vent=lst->vent->sig;
return lst;
}
return lst;
}


tlista * primlista(tlista *lst)
{
lst->vent=lst->cab;
return lst;

}
tlista * ultlista(tlista *lst)
{
lst->vent=lst->ult;
return lst;

}


tlista *antlista (tlista *lst)
{

if(lst->tam==0)
{
return lst;
}
else if(lst->tam==1)
{
return lst;

}
else
{

lst->vent = lst->vent->ant;


}
return lst;
}

tlista * insertarlista (tlista *lst,tdato ele)

{

tnodo *nuevo = new tnodo();
nuevo->dato=ele;
nuevo ->sig =0;
nuevo->ant=0;
if(lst->tam==0)
{

lst->cab=nuevo;
lst->vent=nuevo;
lst->tam=lst->tam+1;

}
else if(lst->vent !=lst->ult)
{
nuevo->sig=lst->vent->sig;
lst->vent->sig->ant=nuevo;
lst->vent->sig=nuevo;
nuevo->ant=lst->vent;
lst->vent=nuevo;
lst->tam += 1;
return lst;
}


else
{

nuevo->ant =lst ->vent;
lst->vent->sig=nuevo;
lst->tam++;
}
return lst;
}

tlista * eliminarlista(tlista * lst)
{

if(lst->tam==0)
{
return lst;
}
else if(lst->cab==lst->vent)
{
tnodo*aux=lst->cab;
lst->cab=lst->vent->sig;
lst->tam--;
lst->vent->ant=0;
delete aux;
return lst;
}

else if(lst->ult==lst->vent)
{
tnodo * aux=lst->vent;
lst->vent = lst->vent->ant;
lst->vent->sig=0;
lst->tam--;
lst->ult=lst->vent;
delete aux;
return lst;

}
else
{
tnodo *aux=lst->vent;
lst->vent->ant->sig=lst->vent->sig;
lst->vent->sig->ant=lst->vent->ant;
lst->vent=lst->vent->ant;
lst->tam--;
delete aux;
return lst;


}
return lst;
}


bool finlista()
{
if(lst->vent==0)
{
return
}

}
bool buscarlista (tlista * lst ,estudiantes x)
{

for(primlista(lst);!finlista(lst);siglista(lst))
{
if(infolista(lst)==x)
{
return true;

}

}
return false;
}

0 comentarios:

Publicar un comentario

Tu comentario será moderado la primera vez que lo hagas al igual que si incluyes enlaces. A partir de ahi no ser necesario si usas los mismos datos y mantienes la cordura. No se publicarán insultos, difamaciones o faltas de respeto hacia los lectores y comentaristas de este blog.