Ejercicios De Pilas y Colas

Páginas: 5 (1177 palabras) Publicado: 20 de julio de 2011
COLA

Se pide el ingreso por teclado de un conjunto de datos de manera iterativa hasta que se ingrese la palabra "fin" cuando la consola pida el dato "Nombre". Una vez finalizado el ingreso, y si hay datos en la cola, se procede a mostrarlos navegando mediante las estructuras (struct). Cada estructura contiene la posición de memoria de la estructura siguiente en la cola, por lo que se lasrecorrerá hasta el final y se las irá eliminando de la memoria (ya que conceptualmente un nodo debe leerse de memoria una única vez)

1. #include
2. #include
3. #include
4. #include

5. struct agenda
6. {
7. char nombre[50];
8. char telefono[25];
9. char mail[50];
10. };

11. struct nodo
12. {
13. struct agenda dato;
14. struct nodo*proximo;
15. };

16. struct nodo *nuevonodo();
17. int colavacia(struct nodo *);
18. struct nodo *creacola(struct nodo *, struct agenda);
19. void mostrar(struct nodo *);

20. void main()
21. {
22. struct nodo *pri=NULL, *ult=NULL;
23. struct agenda x;
24.     printf("Ingrese nombre: ");
25. gets(x.nombre);
26. while(strcmpi(x.nombre,"fin"))
27. {28.         printf("Ingrese telefono: ");
29. gets(x.telefono);
30.         printf("Ingrese mail: ");
31. gets(x.mail);
32. ult=creacola(ult,x);
33. if(pri==NULL) pri=ult; // Si es la 1º pasada pongo en pri el valor del primer nodo
34.         printf("Ingrese nombre: ");
35. gets(x.nombre);
36. }
37. if(colavacia(pri)==1) { printf("No se ingresaronregistros"); getch(); }
38. else mostrar(pri);
39. }

40. struct nodo *nuevonodo()
41. {
42. struct nodo *p;
43. p=(struct nodo *)malloc(sizeof(struct nodo));
44. if(p==NULL)
45. {
46.         printf("Memoria RAM Llena");
47. getch();
48. exit(0);
49. }
50. return p;
51. }

52. struct nodo *creacola(struct nodo *ult, struct agenda x)
53. {54. struct nodo *p;
55. p=nuevonodo();
56. (*p).dato=x;
57. (*p).proximo=NULL;
58. if(ult!=NULL) (*ult).proximo=p; // Si hay nodo anterior en prox pongo la direccion del nodo actual
59. return p;
60. }

61. int colavacia(struct nodo *pri)
62. {
63. if(pri==NULL) return 1;
64. else return 0;
65. }

66. void mostrar(struct nodo *pri)
67. {68. struct nodo *aux;
69. while(pri!=NULL)
70. {
71.         printf("Nombre: %s - Telefono: %s - Mail: %s \n",pri->dato.nombre,pri->dato.telefono,pri->dato.mail);
72. aux=pri;
73. pri=(*pri).proximo;
74. free(aux);
75. }
76. getch();
77. }

PILA

En este caso se solicita un conjunto de datos de manera iterativa a ingresar por teclado. Cuando se finaliza elingreso, se porcede a mostrar los elementos de la pila y además se utiliza un archivo binario para transformar la pila en memoria en una estructura de datos persistente. Cada nodo de la pila, como en el caso anterior, mantendrá una referencia al nodo siguiente haciendo posible el futuro recorrido de la misma. Luego de finalizada la muestra de los elementos de la pila, se consulta al usuario si sedesea acceder a los datos de la misma almacenados en el archivo binario, para lo cual, en el caso de responder Si (S), se accede al archivo y se imprimen los registros de manera secuencial.

1. #include
2. #include
3. #include
4. #include

5. struct productos
6. {
7. int codigo;
8. char nombre[50];
9. int existencia;
10. float precio;
11. };12. struct nodo
13. {
14. struct productos dato;
15. struct nodo *proximo;
16. };

17. /* Declaracion de funciones */
18. void archivo(FILE *fp);
19. struct nodo *nuevonodo();
20. struct nodo *creapila(struct nodo *pri, struct productos x);
21. void muestra(struct nodo *pri, FILE *fp);
22. /* Fin de Declaracion */

23. void main()
24. {
25....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Lista De Ejercicios Pilas Y Colas
  • Guias De Ejercicios (Lista Pila Y Cola)
  • Pilas y colas
  • pilas y colas
  • Pilas y colas
  • Pilas y colas
  • Pilas y colas
  • Colas y pilas

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS