Beruflich Dokumente
Kultur Dokumente
1. Disee una funcin que permita incluir un nodo al final de una lista doblemente enlazada
cclica. Recuerde que una lista doblemente enlazada cclica est estructurada como lo
muestra la siguiente figura.
ListaD
Ant
Info
Sig
Ant
Info
Sig
Ant
Info
Sig
Lista [12]
0
Lista[0]
Lista[1]
...
...
10
Lista[10]
11
Lista[11]
Sutanita
Info
Cumple
1
82
Sig
Info
Fulanito
Sig
Info
Sig
Cumple
1
73
...
Meses
Info
Sig
Info
Sig
Info
Sig
Info
Sig
Info
Sig
Info
Sig
Nombre
Cumple
Dia Mes Anio
struct dato
{
char nombre[30];
Fecha cumple;
};
typedef dato DATO;
struct NODO
{
DATO Info;
NODO *Sig;
};
typedef NODO* ptNODO;
struct Lista_Cumple
{
char mes[15];
ptNODO Lista;
};
Lista_Cumple Cumples[N];
void inicializacion (Lista_Cumple Reg[])
{
int i;
strcpy(Cumples[0].mes, "Enero");
strcpy(Cumples[1].mes, "Febrero");
strcpy(Cumples[2].mes, "Marzo");
strcpy(Cumples[3].mes, "Abril");
strcpy(Cumples[4].mes, "Mayo");
strcpy(Cumples[5].mes, "Junio");
strcpy(Cumples[6].mes, "Julio");
strcpy(Cumples[7].mes, "Agosto");
strcpy(Cumples[8].mes, "Septiembre");
strcpy(Cumples[9].mes, "Octubre");
strcpy(Cumples[10].mes, "Noviembre");
strcpy(Cumples[11].mes, "Diciembre");
for (i=0; i<N; i++)
{
Reg[i].Lista = NULL;
}
}
void ingresar(ptNODO &Lista, DATO Elem)
{
ptNODO A = Lista, NUEVO = new(NODO);
NUEVO->Info = Elem; NUEVO->Sig = NULL;
if(Lista == NULL) Lista = NUEVO;
else
{while (A->Sig != NULL) A = A->Sig;
A->Sig = NUEVO;
3
}
}
int mostrar (ptNODO Lista, int aaaa)
{
ptNODO A=Lista;
if (A != NULL)
{
cout<<"Nombre Dia Edad \n";
while (A!= NULL)
{
cout<<A->Info.nombre<<" ";
cout<<A->Info.cumple.dd<<" ";
cout<<aaaa-A->Info.cumple.aaaa<<" ";
A= A->Sig;
}
getch();
return 1;
}
else
{
cout << "Lista Vacia ";
return 0;
}
}
void main()
{
inicializacion (Cumples);
int opc=1, MM, AAAA;
DATO Cumple_Ing;
char slash;
while (opc>=1 && opc<3)
{
cout<<"Menu de Opciones: \n";
cout<<"1) Ingresar Datos \n";
cout<<"2) Mostrar Lista de Cumpleaneros \n";
cout<<"3) Salir del Programa \n";
cin>>opc;
switch (opc)
{
case 1:
clrscr();
cout<<"Ingrese los Datos del Profesor: \nNombre: ";
cin.getline(Cumple_Ing.nombre, 20, '.');
cout<<"Fecha de Nacimiento (dd/mm/aaaa)";
4
cin>>Cumple_Ing.cumple.dd>>slash>>MM>>slash>>Cumple_Ing.cumple.aaaa;
Cumple_Ing.cumple.mm = MM;
ingresar (Cumples[MM-1].Lista, Cumple_Ing);
break;
case 2:
clrscr();
cout<<"Indique el Mes y el Anio para el listado: \n";
cin>>MM>>AAAA;
if (!mostrar(Cumples[MM-1].Lista, AAAA))
{
cout<<"No hay cumpleaeros en ese mes... \n";
}
break;
case 3:
cout<<"Fin del programa...";
break;
}
}
}