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*/