Anda di halaman 1dari 1

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

#include <stdio.h> /*Abro la Libreria de C++*/


struct Nodo { /*defino el nodo como un registro*/
char Nombre [30];/*defino un campo de texto*/
int Nota;/*defino un campo para nota*/
struct Nodo *siguiente;/*defino el puntero q me pemite pasar al siguiente nodo*/
};/*fin de la estructura*/
int main(){ /*inicia el programa*/
int selec, cont; /*defino variables del tipo entero*/
cont=1;/*pongo la variable cont en 1*/
struct Nodo *Nuevo, *ultimo, *primero; /*defino 3 punteros del tipo Nodo (la estructura creada arriba)*/
primero=new (Nodo);/*reservo espacio de memoria RAM para el primer nodo*/
printf("Ingrese Nombre del alumno: \n"); /*pido ingresar nombre (escribir en psint)*/
gets(primero->Nombre);/*leo el nombre ingresado (leer en psint)*/
printf("Ingrese Nota del alumno: \n");/*pido ingresar nota*/
scanf("%i", &primero->Nota);/*leo la nota*/
primero->siguiente=NULL;/*digo que primero en siguiente no vaya a ningun lado*/
ultimo=primero;/*pongo el puntero ultimo en la misma posicion que primero*/
printf("desea ingresar otro Alumno?\n " "1=SI // 0=NO \n");/*pregunto si se quiere ingresar otro dato*/
scanf("%i", &selec);/*leo la respuesta*/
/*fijense que para escribir y leer lo hago por cada parte del puntero "primero"
ya que "primero" es un puntero del tipo "nodo" dentro de el va a haber un:
primero->Nombre (char Nombre[30])
primero->Nota (int Nota)
primero->siguiente (struct nodo *siguiente)
que fue lo que definimos al principio del programa como tipo de estructura
aclaro que poner "primero->Nombre" es lo mismo que poner "(*primero).Nombre"*/
while (selec==1){/*un mientras en caso de que la respuesta sea "1" (valor de la variable "selec")*/
cont++;/*incremento el contador en (esto en c++ es lo mismo que decir cont=cont+1)*/
Nuevo=new (Nodo);/*reservo espacio de memoria RAM para el nuevo nodo*/
printf("Ingrese Nombre del alumno: \n");/*pido nombre de nuevo nodo*/
gets(Nuevo->Nombre);/*leo el nombre leer en psint*/
gets(Nuevo->Nombre);/*lo tuve que escribir dos veces (preguntar al profe esto)*/
printf("Ingrese Nota del alumno: \n");/*pido nota del nuevo nodo*/
scanf("%i", &Nuevo->Nota);/*leo la nota*/
Nuevo->siguiente=primero;/*aca enlazo el nodo nuevo a primero para luego poder recorrer la lista*/
/*acuerdense que "Nuevo" al igual que "primero" son punteros del tipo de estructura Nodo
por lo tanto va a tener tres campos:
Nuevo->Nombre (char Nombre[30])
Nuevo->Nota (int Nota)
Nuevo->siguiente (struct Nodo *siguiente)*/
primero=Nuevo;/*muevo el puntero primero al nuevo nodo, este va a pasar a ser el primer nodo*/
printf("Desea ingresar otro Alumno?\n " "1=SI // 0=NO \n");/*pregunta para saber si seguir o no*/
scanf("%i", &selec);/*leo la respuesta*/
} /*cierro el mientras (respuesta 1 el mientras vuelve a empezar, 0 el mientras se termina)*/
Nuevo=primero; /*posiciono el puntero nuevo en el primero (que es el primer nodo) para imprimir*/
if (Nuevo->siguiente==NULL){ /*verifico si se ingreso un nodo solo (sentencia si en psint)*/
printf("Un Solo Alumno \nNombre: %s \n", Nuevo->Nombre); /*escribo el nombre*/
printf("Nota: %i\n ", Nuevo->Nota);/*escribo la nota*/
} else { /*sino en psint*/
while (Nuevo!=NULL){ /*si entra aca es porque hay mas nodos, se hace un mientras y recorro*/
printf("Nombre: %s\n ", Nuevo->Nombre);/*escribo el nombre en pantalla*/
printf("Nota: %i\n ", Nuevo->Nota);/*escribo la nota en pantalla*/
Nuevo=Nuevo->siguiente;/*avanzo el puntero nuevo a la siguiente posicion de la lista*/
}; /*cierro el while*/
}; /*cierro el si*/
delete[] Nuevo; /*libero la memoria RAM reservada por los punteros*/
delete[] primero; /*libero la memoria RAM reservada por los punteros*/
delete[] ultimo; /*libero la memoria RAM reservada por los punteros*/
return 0; /*formalidad del c++ antes de cerrar el programa mas adelante sabremos para que es esto*/
} /*FIN*/