Tema: Listas!!!
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2010, 19:30
Leny_cute
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Listas!!!

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