#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
struct pila
{
char nombre[40];
int ced;
int edad;
int tel;
char sex[10];
char eps[50];
char mail[50];
struct pila *sig;
}*cima=NULL,*p=NULL;
void menu();
void portada();
void insertar();
void extraer();
void visualizar ();
void main()
{
portada();
clrscr();
textcolor(8);
menu();
}
void portada()
{
system("color 13");
gotoxy(10,2);cout<<"ESTRUCTURA DE DATOS"<<endl;
gotoxy(10,6);cout<<"TRABAJO COLABORATIVO NO 2"<<endl;
gotoxy(10,9);cout<<"PROFESOR HERMES MOSQUERA"<<endl;
gotoxy(10,14);cout<<"Powered By YAIR JOSE DIAZ GONZALEZ"<<endl;
gotoxy(10,15);cout<<"UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA(UNAD)"<<endl;
gotoxy(10,19);system("pause");
}
void insertar() // Funcion que inserta datos a la pila
{
char n;
struct pila *p;
p = (struct pila*) malloc(sizeof(struct pila)); // reservamos
// espacio para el nodo (dato, sig)
clrscr();
if(cima==NULL)
{
do
{
p->sig = NULL; // hacemos que el nuevo nodo apunte a NULL
cima = p; // Ahora el tope es el nuevo nodo
clrscr();
gotoxy(5,5);printf("Escriba el nombre: ");
gotoxy(5,6) ;scanf("%s",p->nombre);
gotoxy(5,7);printf("Dame Edad: ");
gotoxy(5,8);scanf("%d",&p->edad);
gotoxy(5,9);printf("Dame su telefono: ");
gotoxy(5,10);scanf("%d",&p->tel);
gotoxy(5,11);printf("Dame el No de Cedula: ");
gotoxy(5,12);scanf("%d",&p->ced);
gotoxy(5,13);printf("Dame el sexo: ");
gotoxy(5,14);scanf("%s",&p->sex);
gotoxy(5,15);printf("Afiliacion a EPS o ARS: ");
gotoxy(5,16);scanf("%s",&p->eps);
gotoxy(5,17);printf("Deme su Email: ");
gotoxy(5,18);scanf("%s",&p->mail);
gotoxy(5,21);cout<<"Para introducir otro paciente intro S/N"<<endl;
gotoxy(5,22);cin>>n;
}
while((n=='s')||(n=='S'));
menu();
return;
}
else// si no
{
p->sig = cima; // hacemos que el nuevo nodo apunte al tope
cima = p; // ahora el tope es el nuevo nodo
}
}
void extraer()
{
if(cima == NULL)
{
printf("PILA VACIAn");
return;
}
struct pila *tmp; // temporal para almacenar la direccion del tope
tmp = cima; // guardamos en tmp la ubicacion del tope
cima = tmp->sig; // hacemos que el tope sea el anterior nodo ingresado
// sacamos el dato del nodo que estaba como tope
printf("Nombre : %sn", tmp->nombre);
printf("Edad : %dn", tmp->ced);
printf("Edad : %dn", tmp->edad);
printf("Edad : %dn", tmp->tel);
printf("Nombre : %sn", tmp->sex);
printf("Nombre : %sn", tmp->eps);
printf("Nombre : %sn", tmp->mail);
free(tmp); // liberamos la memoria reservada para el tope
}
void visualizar (void)// funcion de la pila que le permite visualizar datos
{
char n;
if (cima==NULL)//si c esta vacio
{
do
{
clrscr();
cout<<"NO HAY ELEMENTOS A LISTAR";//entoces mostrar esto
gotoxy(5,19);cout<<"Desea regresar al menu principal S/N"<<endl;
gotoxy(5,20);cin>>n;
}
while((n=='n')||(n=='N'));
menu();
}
else// si no
{
clrscr();//limpiar pantalla
do
{
p=cima;//asignas inicio a p
while (p!=NULL)//mientras inicio no este vacia
{
clrscr();
printf("Nombre : %sn", p->nombre);
printf("Edad : %dn", p->ced);
printf("Edad : %dn", p->edad);
printf("Edad : %dn", p->tel);
printf("Nombre : %sn", p->sex);
printf("Nombre : %sn",p->eps);
printf("Nombre : %sn", p->mail);
cima=p;
p=p->sig;
free(cima);
gotoxy(5,19);cout<<"Desea regresar al menu principal S/N"<<endl;
gotoxy(5,20);cin>>n;
}
}
while((n=='n')||(n=='N'));
menu();
}
getch();
}
void menu()
{
int opc=0;
do
{
clrscr();
gotoxy(12,3);cout<<"ASIGNADOR DE CITAS ";
gotoxy(15,7);cout<<"nnn";
gotoxy(15,8);cout<<"1. Insertarn";
gotoxy(15,9);cout<<"2. Extraern";
gotoxy(15,10);cout<<"3. Visualizarn";
gotoxy(15,11);cout<<"4. Salirnn";
gotoxy(15,13);cout<<"Digite la opcion: ";
cin >>opc;
switch (opc)
{
case 1:
insertar();
break;
case 2:
extraer();
break;
case 3:
visualizar();
break;
case 4:
exit(1);
}
getch();
}while (opc!=4);
}