#include "lista.h"
#include "libro.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
void listaD::inicializa()
{
hd=NULL;
t=NULL;
}
bool listaD::vacia()
{
if(hd==NULL&&t==NULL)
{
return true;
}
else
{
return false;
}
}
void listaD::insertarordenado(libro elemento)
{
nodo *aux=hd;
nodo *tmp=new nodo;
tmp->setData(elemento);
tmp->setSig(NULL);
tmp->setAnt(NULL);
//elemento.mostrar();
//system("pause");
// cout<<"LISTACANCIONES"<<aux->elemento;
if(hd==NULL)
{
hd=t=tmp;
}
else
{
if(hd->getData().getnombre()>elemento.getnombre())
{
tmp->sig=hd;
hd->ant=tmp;
hd=tmp;
}
else
{
while(aux->getSig()&&aux->getSig()->getData().getnombre()<elemento.getnombre())
{
aux=aux->getSig();
}
tmp->sig=aux->sig;
tmp->ant=aux;
aux->sig=tmp;
if(tmp->getSig()) tmp->sig->ant=tmp;
}
}
}
void listaD::mostrar()
{
nodo *aux=hd;
listaD ls;
if(vacia())
{
cout<< "\tLISTA VACIA"<<endl;
system("pause");
}
else
{
while(aux!=NULL)
{
aux->data.mostrar();
aux=aux->getSig();
}
}
}
void listaD::eliminar(string elemento)
{
nodo *aux=hd;
if(vacia())
{
cout<< "\tLISTA VACIA"<<endl;
system("pause");
}
else
{
while(aux!=NULL&&aux->getData().getnombre()!=elemento)
{
aux=aux->getSig();
}
if(aux==NULL)
{
cout<< "\tNO ENCONTRADO"<<endl;
system("pause");
}
else if(aux==t&&aux==hd)
{
delete(aux);
t=hd=NULL;
}
else if(aux==t)
{
t=t->getAnt();
delete(aux);
t->sig=NULL;
}
else if(aux==hd)
{
hd=hd->getSig();
delete(aux);
t->ant=NULL;
}
else if(hd!=NULL&&t!=NULL)
{
aux->ant->sig=aux->sig;
aux->sig->ant=aux->ant;
delete(aux);
}
}
}
void listaD::buscar(string elemento)
{
nodo *tmp=hd;
int i=1, band=0;
while(tmp!=NULL)
{
if(tmp->getData().getnombre()==elemento)
{
cout<< "\tELEMENTO ENCONTRADO"<<endl;
cout<< "\tPOSICION: "<<i<<endl;
system("pause");
tmp->getData().mostrar();
band=1;
system("pause");
}
tmp=tmp->getSig();
i++;
}
if(band==0)
{
cout<< "\tELEMENTO NO ENCONTRADO"<<endl;
system("pause");
}
}
void listaD::eliminartodo()
{
nodo *tmp=hd=t;
if(hd==NULL&&t==NULL)
{
cout<< "\tLISTA VACIA"<<endl;
system("pause");
}
else
{
while(hd!=NULL)
{
tmp=hd=t;
hd=hd->getSig();
t=t->getSig();
delete(tmp);
}
}
}
void listaD::siguiente(string elemento)
{
nodo *aux=hd;
if(vacia())
{
cout<< "\tLISTA VACIA"<<endl;
system("pause");
}
else
{
while(aux!=NULL&&aux->getData().getnombre()!=elemento)
{
aux=aux->getSig();
}
if(aux==NULL)
{
cout<< "\tNO EXISTE"<<endl;
system("pause");
}
else if(aux==t)
{
cout<< "\tULTIMO ELEMENTO"<<endl;
system("pause");
}
else if(aux->getData().getnombre()==elemento)
{
cout<< "\tSIGUIENTE"<<endl;
aux->getSig()->getData().mostrar();
}
}
}
void listaD::anterior(string elemento)
{
nodo *aux=t;
if(vacia())
{
cout<< "\tLISTA VACIA"<<endl;
system("pause");
}
else
{
while(aux!=NULL&&aux->getData().getnombre()!=elemento)
{
aux=aux->getAnt();
}
if(aux==NULL)
{
cout<< "\tNO ENCONTRADO"<<endl;
system("pause");
}
else if(aux==hd)
{
cout<< "\tPRIMER ELEMENTO"<<endl;
system("pause");
}
else if(aux->getData().getnombre()==elemento)
{
cout<< "\tANTERIOR"<<endl;
aux->getAnt()->getData().mostrar();
}
}
}