Alquien me podria explicar lo que sepan de listas en c++,
como insertar datos en donde quieras de la lista,
ya he logrado realizar los programas de insertar en orden de como los vas agregando,
tmb el primero que ingreses sera el ultimo, y asi sucesivamente...
aqui estan el primer d los programas... ( pa k vean k si trabajo, pero llevo ya toda la tarde, y ps no le entiendo jaja) expliquenme please :(
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define ELEMENTOS 10
struct top_ten{
char nombre[30];
char cantante[30];
char comp_letra[30];
char comp_musica[30];
char disquera[30];
char fecha[30];
struct top_ten *siguiente;
};
struct top_ten *primero, *ultimo;
void menu(){
printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°\n\n1. Mostrar todo\n 2. Añadir\n3. Desplegar Cada Dato\n4.Salir\n ");
printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°\n");
}
void error(){
printf("ERROR MORTAL\t error 1GRGR3872125000\t ERRROR!!!\n\t\t\tIntenta de nuevo......\n");
}
void anadir(){//FUNCION AÑADIR ELEMENTO
struct top_ten *nuevo;
/*Reserva memoria para el nuevo elemento*/
nuevo=(struct top_ten*)malloc(sizeof(struct top_ten));
if(nuevo==NULL){
printf("No hay memoria\n");
}
printf("\n\tTOP TEN\nCancion:\n");
getchar();
gets(nuevo->nombre);
printf("\nCantante: ");
gets(nuevo->cantante);
printf("\nCompositor de la letra\n");
gets(nuevo->comp_letra);
printf("\nCompositor de la musica\n");
gets(nuevo->comp_musica);
printf("\nDisquera\n");
gets(nuevo->disquera);
printf("\nFecha de Lanzamiento\n");
gets(nuevo->fecha);
/*El ultimo elemento es NULL por ser el */
nuevo->siguiente=NULL;
/* sE GUARDA el nuevo elemento en la lista al final
Se comprueba si la lista esta vacia*/
if(primero==NULL){
printf("\n Primer elemento\n");
primero=nuevo;
ultimo=nuevo;
}
else{//Ahora el ultimo que apuntar al nuevo
ultimo->siguiente=nuevo;
/*el nuevo sera ahora el ultimo*/
ultimo=nuevo;
/* else{
primero->siguiente=nuevo;
primero=nuevo;
} */
}
} //END FUNCION AÑADIR ELEMENTO
void mostrar(){
struct top_ten *auxiliar; /*Para recorrer la lista*/
int i;
i=0;
auxiliar=primero;
printf("\nMostrar la lista TOP TEN:\n");
while(auxiliar!=NULL){
printf("\nCancion: %s\nCantante: %s\nCompositor de Letra: %s\nCompositor de Musica: %s\n Disquera: %s\n Fecha de Lanzamiento: %s\n", auxiliar->nombre, auxiliar->cantante, auxiliar->comp_letra, auxiliar->comp_musica, auxiliar->disquera, auxiliar->fecha);
auxiliar=auxiliar->siguiente;
i++;
}
if(i==0){
printf("\n La lista esta vacia\n");
}
}
void cadaDato(){
struct top_ten *auxiliar; /*Para recorrer la lista*/
int i, opcion, exit=0;
i=0;
auxiliar=primero;
printf("\nMostrar la lista TOP TEN:\n");
printf("\n1. Cancion\n 2.Cantante\n3.Compositor musica y letra\n 4. Disquera y Fecha de Lanzamiento\n\nOpcion: ");
scanf("%d",&opcion);
switch(opcion){ //switch
case 1:
while(auxiliar!=NULL){printf("\nCancion: %s\n", auxiliar->nombre);
auxiliar=auxiliar->siguiente;
i++;
}
getch();
break;
case 2:
while(auxiliar!=NULL){printf("\nCantante: %s\n", auxiliar->cantante);
auxiliar=auxiliar->siguiente;
i++;
}
getch();
break;
case 3:
while(auxiliar!=NULL){printf("\nCompositor de Letra: %s\nCompositor de Musica: %s\n ", auxiliar->comp_letra, auxiliar->comp_musica);
auxiliar=auxiliar->siguiente;
i++;
}
getch();
break;
case 4:
while(auxiliar!=NULL){
printf("Disquera: %s\n Fecha de Lanzamiento: %s\n", auxiliar->disquera, auxiliar->fecha);
auxiliar=auxiliar->siguiente;
i++;
getch();}
break;
default:
printf("\tNO VALIDO\n");
getch();
break;
}//end switch
if(i==0){
printf("\n La lista esta vacia\n");
}
}
main(){//menu
int opcion, exit=0;
do{//do
menu();
scanf("%d",&opcion);
switch(opcion){//switch
case 1:
mostrar();
getch();
break;
case 2:
anadir();
getch();
break;
case 3:
cadaDato();
getch();
break;
case 4:
exit=1;
break;
default:
error();
getch();
break;
}//end switch
}while(!exit);// end do-while
}//end menu