Tema: Listas!!!
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/05/2010, 20:34
Avatar de Fernand0
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