Dev - C++ - AYUDA, listas dobles enlazadas c++

 
Vista:
sin imagen de perfil
Val: 16
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

AYUDA, listas dobles enlazadas c++

Publicado por oven (5 intervenciones) el 15/04/2020 01:07:44
ME FALTA SOLO EL 3!!!!

ejercicio:
LISTAS DOBLEMENTE ENCADENADAS
.

2. Las sucesivas consultas de un call center recibidas en un día, en una serie de 10 puestos telefónicos se almacenan por medio de una única lista doblemente encadenada ordenada en forma creciente de acuerdo a la hora de la llamada. En cada nodo se guarda: número del puesto, hora y un texto relativo a la consulta realizada. A diario se elimina toda la lista al desconectar el sistema.


Hacer funciones para:

a. agregar una nueva consulta recibida.
b. Imprimir el texto de una consulta, dado el N° de puesto y hora.
c. imprimir el texto de todas las consultas realizadas entre dos horas dadas.
d. borrar todas las consultas de la mañana.
e. borrar todas las consultas de un N° de puesto dado.

3. Con la estructura del ejercicio 2. se pide hacer una función que a partir de la lista original genere diez listas para separar las consultas de cada puesto, debe además devolver un vector conteniendo los punteros de entrada a cada lista.

4. Escribir un programa que ofreciendo un menú de opciones permita con las funciones de los puntos 2 y 3 simular la recepción y administración de las consultas en los 10 puestos telefónicos.





LO QUE YO HICE (me falta solo el 3):

#include <iostream>
#include <conio.h>
#include <cstring>

using namespace std;


struct llamada{
int puesto;
int hora;
char desc[55];
};


struct nodo{
llamada dato;
nodo* siguiente;
nodo* atras;
}*primero, *ultimo, *aux, *aux2;




void InsertarNodo(){
nodo* nuevo=new nodo();
cout<<"Ingrese numerode puesto:";
cin>>nuevo->dato.puesto;cout<<endl;
cout<<"Ingrese la hora de la llamada:";
cin>>nuevo->dato.hora;cout<<endl;
cout<<"Ingrese descripcion de la consulta:";
cin>>nuevo->dato.desc;cout<<endl;

if(primero==NULL){
primero=nuevo;
primero->siguiente=NULL;
primero->atras=NULL;
ultimo=primero;
}else{
ultimo->siguiente=nuevo;
nuevo->siguiente=NULL;
nuevo->atras=ultimo;
ultimo=nuevo;
}
cout<<endl<<"Nodo Ingresado."<<endl;

}


void DesplegarPU(){
nodo* actual=new nodo();
actual=primero;
if(primero!=NULL){
while(actual!=NULL){
cout<<endl;
cout<<"Puesto:"<<actual->dato.puesto<<endl;
cout<<"Hora:"<<actual->dato.hora<<endl;
cout<<"Descripcion:"<<actual->dato.desc<<endl;

actual=actual->siguiente;
}

}else{
cout<<"La lista esta vacia."<<endl;
}
}


void DesplegarUP(){
nodo* actual=new nodo();
actual=ultimo;
if(primero!=NULL){
while(actual!=NULL){
cout<<endl;
cout<<"Puesto:"<<actual->dato.puesto<<endl;
cout<<"Hora:"<<actual->dato.hora<<endl;
cout<<"Descripcion:"<<actual->dato.desc<<endl;


actual=actual->atras;
}

}else{
cout<<"La lista esta vacia."<<endl;
}
}


void Ordenar(){
nodo *aux, *aux2;
llamada temp;
aux=primero;

while(aux->siguiente!=NULL){
aux2=aux->siguiente;
while(aux2!=NULL){
if(aux2->dato.hora>aux->dato.hora){
temp.hora=aux2->dato.hora;
aux2->dato.hora=aux->dato.hora;
aux->dato.hora=temp.hora;

////
temp.puesto=aux2->dato.puesto;
aux2->dato.puesto=aux->dato.puesto;
aux->dato.puesto=temp.puesto;

////
// temp.desc=aux2->dato.desc;
// aux2->dato.desc=aux->dato.desc;
// aux->dato.desc=temp.desc;

}
aux2=aux2->siguiente;
}
aux=aux->siguiente;
}
DesplegarUP();
return;
}


void BuscarNodo(){
nodo* actual=new nodo();
actual=primero;
bool encontrado=false;
int nodobuscado=0;
int horabuscada=0;

cout<<"Ingrese el Numero de puesto: ";cin>>nodobuscado;
cout<<endl<<"Ingrese la Hora:";cin>>horabuscada;

if(primero!=NULL){
while((actual!=NULL) && (encontrado!=true)){
if(actual->dato.puesto==nodobuscado){
cout<<"Nodo Buscado fue encontrado."<<endl;
if(actual->dato.hora==horabuscada){
cout<<endl;
cout<<"Puesto:"<<actual->dato.puesto<<endl;
cout<<"Hora:"<<actual->dato.hora<<endl;
cout<<"Descripcion:"<<actual->dato.desc<<endl;
}
encontrado=true;

}

actual=actual->siguiente;
}
if(encontrado==false){
cout<<"El documento Ingresado no existe."<<endl;
}
}else{
cout<<"La lista se encuentra Vacia."<<endl;
}

}


void Desplegarentrehoras(){
nodo* actual=new nodo();
actual=primero;
int de, a;
cout<<endl;
cout<<"Ingrese las horas:"<<endl;
cout<<"De:";cin>>de;cout<<endl<<"A:";cin>>a;cout<<endl;
if(primero!=NULL){
while(actual!=NULL){
if((actual->dato.hora >= de) && (actual->dato.hora <= a)){
cout<<endl;
cout<<"Puesto:"<<actual->dato.puesto<<endl;
cout<<"Hora:"<<actual->dato.hora<<endl;
cout<<"Descripcion:"<<actual->dato.desc<<endl;
}


actual=actual->siguiente;
}

}else{
cout<<"La lista esta vacia."<<endl;
}
}


void EliminarNodoporhoras(){

nodo* actual=new nodo();
actual=primero;
nodo* anterior=new nodo();
anterior=NULL;



if(primero!=NULL){
while(actual!=NULL){
if(actual->dato.hora<12){
if(actual==primero){
primero=primero->siguiente;
}else{
if(actual==ultimo){
anterior->siguiente=NULL;
ultimo=anterior;

}else{
anterior->siguiente=actual->siguiente;
}
}
cout<<endl<<"Nodo Eliminado con Exito."<<endl;
}
anterior=actual;
actual=actual->siguiente;
}

}else{
cout<<"La lista se encuentra Vacia."<<endl;
}

}


void EliminarNodoporpuesto(){

nodo* actual=new nodo();
actual=primero;
nodo* anterior=new nodo();
anterior=NULL;
int puestobuscado;

cout<<endl;
cout<<"Ingrese el puesto que desea eliminar:";cin>>puestobuscado;cout<<endl;

if(primero!=NULL){
while(actual!=NULL){
if(actual->dato.puesto==puestobuscado){
if(actual==primero){
primero=primero->siguiente;
}else{
if(actual==ultimo){
anterior->siguiente=NULL;
ultimo=anterior;

}else{
anterior->siguiente=actual->siguiente;
}
}
cout<<endl<<"Nodo Eliminado con Exito."<<endl;
}
anterior=actual;
actual=actual->siguiente;
}

}else{
cout<<"La lista se encuentra Vacia."<<endl;
}

}

int main(void){
int opcion;
opcion=0;


do{

do{
cout<<endl;
cout<<"Eliga opcion: "<<endl<<"1)Insertar Nodos."<<endl<<"2)Despregar de adelante a atras."<<endl<<"3)Desplegar de atras para adelante."<<endl<<"4)Ordenar."<<endl<<"5)Imprimir dado numero de puesto."<<endl;
cout<<"6)Desplegar entre horarios."<<endl<<"7)Eliminar los de la mañana."<<endl;;
cin>>opcion;
}while((opcion<1) || (opcion>9));





switch(opcion){
case 1:
InsertarNodo();

break;
case 2:
DesplegarPU();
break;
case 3:
DesplegarUP();
break;
case 4:
Ordenar();
break;
case 5:
BuscarNodo();
break;
case 6:
Desplegarentrehoras();
break;
case 7:
EliminarNodoporhoras();
break;
case 8:
EliminarNodoporpuesto();
break;
default:
cout<<"Opcion No valida.";
}
}while(opcion!=9);


getch();
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder