Esta bien resuelto el ejercicio de pilas?
Publicado por Laura (1 intervención) el 18/07/2016 00:56:11
Tengo el siguiente enunciado de final de la materia estructura de datos 2 donde vemos pilas, colas y listas con punteros!!!.
En un turno de examen, a medida que se corrigen las evaluaciones, se van apilando los exámenes.
Para organizar la información. Desarrollar:
a-) Generar una pila, guardando por cada evaluación la nota obtenida. La condición de fin la indica el alumno.
b-) Una vez terminada la evaluación, organizar la información obtenida en a) en una lista ordenada por nota, indicando
Nota ( campo ordenado) Cantidad de exámenes con esa nota.
UN SOLO NODO POR NOTA
c-) Mostrar la lista generada
A continuacion les pego el código... Mi consulta es si esta bien resuelto con lo que me piden en el enunciado y como sería desapilar en caso de que me lo pidan...
Estoy al horno... En agosto tengo que dar final y siempre me costo lenguaje C...
Si alguien me puede explicar lo agradeceria muchisimo. Mi email es: [email protected]
En un turno de examen, a medida que se corrigen las evaluaciones, se van apilando los exámenes.
Para organizar la información. Desarrollar:
a-) Generar una pila, guardando por cada evaluación la nota obtenida. La condición de fin la indica el alumno.
b-) Una vez terminada la evaluación, organizar la información obtenida en a) en una lista ordenada por nota, indicando
Nota ( campo ordenado) Cantidad de exámenes con esa nota.
UN SOLO NODO POR NOTA
c-) Mostrar la lista generada
A continuacion les pego el código... Mi consulta es si esta bien resuelto con lo que me piden en el enunciado y como sería desapilar en caso de que me lo pidan...
Estoy al horno... En agosto tengo que dar final y siempre me costo lenguaje C...
Si alguien me puede explicar lo agradeceria muchisimo. Mi email es: [email protected]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# include <conio.h>
# include <stdio.h>
# include <stdlib.h>
typedef struct eval nodo;
struct eval
{
int nota; //tipo de dato
int cantidad;
nodo *sig; //puntero a la estructura
};
nodo *nuevonodo(void);
void apilar (nodo **, nodo *);
void listar (nodo*);
int main ()
{
nodo *pi=NULL, *q, *pr;
int nota;
printf ("\nIngrese nota (0 para salir): ");
scanf ("%d", ¬a);
fflush(stdin);
while(nota)
{
q=nuevonodo(); //q es igual a nuevo nodo
q->nota=nota; //q en el campo nota almacena nota
q->cantidad=0; //q en el campo cantidad es igual a cero
apilar (&pi, q);
printf ("\nIngrese nota (0 para salir): ");
scanf ("%d", ¬a);
fflush(stdin);
}
pr=pi;
while (pr)
{
q=nuevonodo();
q->nota=pr->nota;
q->cantidad=1;
apilar (&pi,q);
pr=pr->sig;
}
listar (pi);
getch();
return 0;
}
nodo* nuevonodo ()
{
nodo *q;
q=(nodo*)malloc(sizeof(nodo));
if (q==NULL)
{
printf ("\nError de Memoria!!!");
getch();
exit (1);
}
return (q);
}
void apilar (nodo **pi, nodo *q)
{
nodo *pr, *px;
if(*pi==NULL)
{
q->sig=NULL;
*pi=q;
}
else if (q->nota < (*pi)->nota)
{
q->sig=*pi;
*pi=q;
}
else
{
pr=px=*pi;
while (pr&&(pr->nota<q->nota))
{
px=pr;
pr=pr->sig;
}
if (pr&&(q->nota==pr->nota))
{//el peso es el mismo y ya existe en la lista
pr->cantidad++; //se actualiza en nodo
free(q);//se borra el nuevo nodo ya que no se va a actualizar
}
else
{
px->sig=q;
q->sig=pr;
}
}
}
void listar (nodo *pi)
{
if(!pi)
printf("\nLista Vacia");
printf ("\nNOTA\TCANTIDAD");
while (pi)
{
printf ("\n%d\t%d", pi->nota, pi->cantidad);
pi=pi->sig;
}
}
Valora esta pregunta
0