• Viernes 3 de Mayo de 2024, 18:04

Autor Tema:  por favor examinar este codigo de una estructura tipo pila  (Leído 1129 veces)

luchojimenez

  • Miembro activo
  • **
  • Mensajes: 56
    • Ver Perfil
por favor examinar este codigo de una estructura tipo pila
« en: Lunes 11 de Octubre de 2010, 22:18 »
0
hasta el momento solo llevo esto pero  tengo problemas con la funcion insertar
Código: C++
  1.  
  2. #include<iostream.h>
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<conio.h>
  6. #include<dos.h>
  7. #include<string.h>
  8.  
  9.  
  10. struct pila
  11. {
  12. char nombre[40];
  13. int ced;
  14. int edad;
  15. int tel;
  16. char sex[10];
  17. char eps[50];
  18. char mail[50];
  19. struct pila *sig;
  20. }*cima=NULL,*p=NULL;
  21. void menu();
  22. void portada();
  23. void insertar();
  24. void extraer();
  25. void visualizar ();
  26. void main()
  27. {
  28. portada();
  29. clrscr();
  30. textcolor(8);
  31.  
  32. menu();
  33.  
  34. }
  35. void portada()
  36.  
  37. {
  38. system("color 13");
  39. gotoxy(10,2);cout<<"ESTRUCTURA DE DATOS"<<endl;
  40. gotoxy(10,6);cout<<"TRABAJO COLABORATIVO NO 2"<<endl;
  41. gotoxy(10,9);cout<<"PROFESOR HERMES MOSQUERA"<<endl;
  42. gotoxy(10,14);cout<<"Powered By YAIR JOSE DIAZ GONZALEZ"<<endl;
  43. gotoxy(10,15);cout<<"UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA(UNAD)"<<endl;
  44. gotoxy(10,19);system("pause");
  45. }
  46. void insertar() // Funcion que inserta datos a la pila
  47. {
  48. char n;
  49. struct pila *p;
  50. p = (struct pila*) malloc(sizeof(struct pila)); // reservamos
  51. // espacio para el nodo (dato, sig)
  52. clrscr();
  53.  
  54. if(cima==NULL)
  55. {
  56.  
  57. do
  58.   {
  59. p->sig = NULL; // hacemos que el nuevo nodo apunte a NULL
  60. cima = p; // Ahora el tope es el nuevo nodo
  61. clrscr();
  62. gotoxy(5,5);printf("Escriba el nombre: ");
  63. gotoxy(5,6) ;scanf("%s",p->nombre);
  64. gotoxy(5,7);printf("Dame Edad: ");
  65. gotoxy(5,8);scanf("%d",&p->edad);
  66. gotoxy(5,9);printf("Dame su telefono: ");
  67. gotoxy(5,10);scanf("%d",&p->tel);
  68. gotoxy(5,11);printf("Dame el No de  Cedula: ");
  69. gotoxy(5,12);scanf("%d",&p->ced);
  70. gotoxy(5,13);printf("Dame el sexo: ");
  71. gotoxy(5,14);scanf("%s",&p->sex);
  72. gotoxy(5,15);printf("Afiliacion a EPS o ARS: ");
  73. gotoxy(5,16);scanf("%s",&p->eps);
  74. gotoxy(5,17);printf("Deme su Email: ");
  75. gotoxy(5,18);scanf("%s",&p->mail);
  76.  
  77. gotoxy(5,21);cout<<"Para introducir otro paciente intro S/N"<<endl;
  78. gotoxy(5,22);cin>>n;
  79.  
  80. }
  81. while((n=='s')||(n=='S'));
  82.  menu();
  83.  
  84. return;
  85. }
  86.  
  87. else// si no
  88. {
  89.  
  90.  
  91. p->sig = cima; // hacemos que el nuevo nodo apunte al tope
  92. cima = p; // ahora el tope es el nuevo nodo
  93. }
  94.  
  95.  
  96.  
  97. }
  98. void extraer()
  99. {
  100. if(cima == NULL)
  101. {
  102.  
  103. printf("PILA VACIAn");
  104. return;
  105. }
  106. struct pila *tmp; // temporal para almacenar la direccion del tope
  107. tmp = cima; // guardamos en tmp la ubicacion del tope
  108. cima = tmp->sig; // hacemos que el tope sea el anterior nodo ingresado
  109. // sacamos el dato del nodo que estaba como tope
  110. printf("Nombre : %sn", tmp->nombre);
  111. printf("Edad : %dn", tmp->ced);
  112. printf("Edad : %dn", tmp->edad);
  113. printf("Edad : %dn", tmp->tel);
  114. printf("Nombre : %sn", tmp->sex);
  115. printf("Nombre : %sn", tmp->eps);
  116. printf("Nombre : %sn", tmp->mail);
  117. free(tmp); // liberamos la memoria reservada para el tope
  118. }
  119. void visualizar (void)// funcion de la pila que le permite visualizar datos
  120. {
  121. char n;
  122. if (cima==NULL)//si c esta vacio
  123. {
  124. do
  125. {
  126. clrscr();
  127. cout<<"NO HAY ELEMENTOS A LISTAR";//entoces mostrar esto
  128. gotoxy(5,19);cout<<"Desea regresar al menu principal S/N"<<endl;
  129. gotoxy(5,20);cin>>n;
  130. }
  131. while((n=='n')||(n=='N'));
  132. menu();
  133. }
  134.  
  135. else// si no
  136. {
  137. clrscr();//limpiar pantalla
  138. do
  139. {
  140. p=cima;//asignas inicio a p
  141. while (p!=NULL)//mientras inicio no este vacia
  142. {
  143. clrscr();
  144. printf("Nombre : %sn", p->nombre);
  145. printf("Edad : %dn", p->ced);
  146. printf("Edad : %dn", p->edad);
  147. printf("Edad : %dn", p->tel);
  148. printf("Nombre : %sn", p->sex);
  149. printf("Nombre : %sn",p->eps);
  150. printf("Nombre : %sn", p->mail);
  151.  
  152. cima=p;
  153. p=p->sig;
  154. free(cima);
  155. gotoxy(5,19);cout<<"Desea regresar al menu principal S/N"<<endl;
  156. gotoxy(5,20);cin>>n;
  157. }
  158. }
  159. while((n=='n')||(n=='N'));
  160. menu();
  161. }
  162.  
  163. getch();
  164. }
  165. void menu()
  166. {
  167. int opc=0;
  168. do
  169. {
  170. clrscr();
  171. gotoxy(12,3);cout<<"ASIGNADOR DE CITAS ";
  172. gotoxy(15,7);cout<<"nnn";
  173. gotoxy(15,8);cout<<"1. Insertarn";
  174. gotoxy(15,9);cout<<"2. Extraern";
  175. gotoxy(15,10);cout<<"3. Visualizarn";
  176. gotoxy(15,11);cout<<"4. Salirnn";
  177. gotoxy(15,13);cout<<"Digite la opcion: ";
  178. cin >>opc;
  179. switch (opc)
  180. {
  181. case 1:
  182. insertar();
  183. break;
  184. case 2:
  185. extraer();
  186. break;
  187. case 3:
  188. visualizar();
  189. break;
  190. case 4:
  191. exit(1);
  192. }
  193. getch();
  194. }while (opc!=4);
  195. }
  196.  
  197.  
  198.