Hola!!!!! Tu Problema es de realizar una cola estática? o sea con arreglos ( arrays ) ? podria pasarte los metodos de una cola quizas te pueda ayudar mucho eso
saludos!!
saludos!!
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú#define LISTA_H
#include "libro.h"
#include <iostream>
#include <string>
using namespace std;
class nodo
{
private:
libro data;
nodo *sig;
nodo *ant;
public:
void setData(libro dato)
{
data=dato;
}
void setSig(nodo* sigue)
{
sig=sigue;
}
void setAnt(nodo* antes)
{
ant=antes;
}
libro getData()
{
return data;
}
nodo* getSig()
{
return sig;
}
nodo* getAnt()
{
return ant;
}
friend class listaD;
};
class listaD
{
public:
listaD()
{
hd=NULL;
t=NULL;
}
nodo *hd,*t;
void inicializa();
bool vacia();
void insertarordenado(libro);
void mostrar();
void siguiente(string);
void anterior(string);
void eliminar(string);
void buscar(string);
void eliminartodo();
};
#endif // LISTA_H]
#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();
}
}
}