Programación General > C/C++
por favor examinar este codigo de una estructura tipo pila
(1/1)
luchojimenez:
hasta el momento solo llevo esto pero tengo problemas con la funcion insertar
--- Código: C++ --- #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 NULLcima = p; // Ahora el tope es el nuevo nodoclrscr();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 topecima = 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 topetmp = cima; // guardamos en tmp la ubicacion del topecima = tmp->sig; // hacemos que el tope sea el anterior nodo ingresado// sacamos el dato del nodo que estaba como topeprintf("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 estogotoxy(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 pantallado{p=cima;//asignas inicio a pwhile (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);}
Navegación
Ir a la versión completa