Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Listas!!!

Estas en el tema de Listas!!! en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/05/2010, 19:30
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 11 meses
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
  #2 (permalink)  
Antiguo 05/05/2010, 19:49
Avatar de extremoo  
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años
Puntos: 0
Respuesta: Listas!!!

mira aqui hay una buena explicacion con las listas ojala te sirve sale con dibujos y algoritmo paso a paso saludos, http://www.dcc.uchile.cl/~bebustos/apuntes/cc30a/Estructuras/
  #3 (permalink)  
Antiguo 05/05/2010, 20:03
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Listas!!!

wooo! thanks!! me esta sirviendo mucho :)
  #4 (permalink)  
Antiguo 05/05/2010, 20:34
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Listas!!!

free()?

Tendrias que fijar bien el concepto de punteros primero..
Trata de poner bien el codigo, sino nadie lo va a leer..

Código C:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4. #define ELEMENTOS 10
  5.  
  6. struct top_ten{
  7. char nombre[30];
  8. char cantante[30];
  9. char comp_letra[30];
  10. char comp_musica[30];
  11. char disquera[30];
  12. char fecha[30];
  13. struct top_ten *siguiente;
  14. };
  15.  
  16. struct top_ten *primero, *ultimo;
  17.  
  18. void menu()
  19. {
  20.     printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°\n\n1. Mostrar todo\n 2. Añadir\n3. Desplegar Cada Dato\n4.Salir\n ");
  21.     printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°\n");
  22. }
  23. void error()
  24. {
  25.     printf("ERROR MORTAL\t error 1GRGR3872125000\t ERRROR!!!\n\t\t\tIntenta de nuevo......\n");
  26. }
  27.  
  28. void anadir()
  29. {
  30.     struct top_ten *nuevo;
  31.     nuevo=(struct top_ten*)malloc(sizeof(struct top_ten));
  32.     if(nuevo==NULL)
  33.         printf("No hay memoria\n");
  34.    
  35.     printf("\n\tTOP TEN\nCancion:\n");
  36.    
  37.     getchar();
  38.     gets(nuevo->nombre);
  39.     printf("\nCantante: ");
  40.     gets(nuevo->cantante);
  41.     printf("\nCompositor de la letra\n");
  42.     gets(nuevo->comp_letra);
  43.     printf("\nCompositor de la musica\n");
  44.     gets(nuevo->comp_musica);
  45.     printf("\nDisquera\n");
  46.     gets(nuevo->disquera);
  47.     printf("\nFecha de Lanzamiento\n");
  48.     gets(nuevo->fecha);
  49.    
  50.     nuevo->siguiente=NULL;
  51.    
  52.     if(primero==NULL)
  53.     {
  54.         printf("\n Primer elemento\n");
  55.        
  56.         primero=nuevo;
  57.         ultimo=nuevo;
  58.     }
  59.     else
  60.     {
  61.         ultimo->siguiente=nuevo;
  62.         ultimo=nuevo;
  63.     }
  64. }
  65.  
  66.  
  67. void mostrar()
  68. {
  69.     struct top_ten *auxiliar;
  70.     int i=0;
  71.    
  72.     auxiliar=primero;
  73.     printf("\nMostrar la lista TOP TEN:\n");
  74.     while(auxiliar!=NULL)
  75.     {
  76.         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);
  77.         auxiliar=auxiliar->siguiente;
  78.         i++;
  79.     }
  80.     if(i==0)
  81.         printf("\n La lista esta vacia\n");
  82. }
  83.  
  84. void cadaDato()
  85. {
  86.     struct top_ten *auxiliar;
  87.     auxiliar=primero;
  88.    
  89.     int i=0, opcion, exit=0;
  90.    
  91.    
  92.     printf("\nMostrar la lista TOP TEN:\n");
  93.     printf("\n1. Cancion\n 2.Cantante\n3.Compositor musica y letra\n 4. Disquera y Fecha de Lanzamiento\n\nOpcion: ");
  94.     scanf("%d",&opcion);
  95.    
  96.     switch(opcion)
  97.     {
  98.         case 1:
  99.             while(auxiliar!=NULL)
  100.             {
  101.                 printf("\nCancion: %s\n", auxiliar->nombre);
  102.                 auxiliar=auxiliar->siguiente;
  103.                 i++;
  104.             }
  105.             getch();
  106.         break;
  107.        
  108.         case 2:
  109.             while(auxiliar!=NULL)
  110.             {
  111.                 printf("\nCantante: %s\n", auxiliar->cantante);
  112.                 auxiliar=auxiliar->siguiente;
  113.                 i++;
  114.             }
  115.             getch();
  116.         break;
  117.        
  118.         case 3:
  119.             while(auxiliar!=NULL)
  120.             {
  121.                 printf("\nCompositor de Letra: %s\nCompositor de Musica: %s\n ", auxiliar->comp_letra, auxiliar->comp_musica);
  122.                 auxiliar=auxiliar->siguiente;
  123.                 i++;
  124.             }
  125.             getch();
  126.         break;
  127.        
  128.         case 4:
  129.             while(auxiliar!=NULL)
  130.             {
  131.                 printf("Disquera: %s\n Fecha de Lanzamiento: %s\n", auxiliar->disquera, auxiliar->fecha);
  132.                 auxiliar=auxiliar->siguiente;
  133.                 i++;
  134.                 getch();
  135.             }
  136.         break;
  137.        
  138.         default:
  139.             printf("\tNO VALIDO\n");
  140.             getch();
  141.         break;
  142.     }
  143.    
  144.    
  145.     if(i==0)
  146.         printf("\n La lista esta vacia\n");
  147. }
  148.  
  149.  
  150.  
  151.  
  152.  
  153. int main()
  154. {
  155.     int opcion, exit=0;
  156.     do{
  157.         menu();
  158.         scanf("%d", &opcion);
  159.        
  160.         switch(opcion){
  161.            
  162.             case 1:
  163.                 mostrar();
  164.                 getch();
  165.             break;
  166.             case 2:
  167.                 anadir();
  168.                 getch();
  169.             break;
  170.             case 3:
  171.                 cadaDato();
  172.                 getch();
  173.             break;
  174.             case 4:
  175.                 exit=1;
  176.             break;
  177.            
  178.             default:
  179.                 error();
  180.                 getch();
  181.             break;
  182.        
  183.         }
  184.     } while(!exit);
  185.    
  186.     return 0;
  187. }

saludos
  #5 (permalink)  
Antiguo 05/05/2010, 20:55
Avatar de extremoo  
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años
Puntos: 0
Respuesta: Listas!!!

exacto si tienes muy claro el tema de los punteros las listas y colas se te aran faciles saludos

Etiquetas: listas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:48.