Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: javier210186 en 23 Octubre 2011, 22:10 pm



Título: listas enlazadas
Publicado por: javier210186 en 23 Octubre 2011, 22:10 pm
cordial saludo, he leído las recomendaciones ejemplos  y mas ejemplos y no he logrado entender a cabalidad las listas , tengo un problema con una necesito que reciba una estructura y la imprima, hasta el momento no lo he conseguido.
quisiera saber que debo cambiar en el codigo y si no es mucha molestia explicado para a ver si de una vez entiendo las benditas listas. gracias

Código
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. typedef int tipo;
  6.  
  7.                 struct estudiante
  8.                         {   char nombre[50];
  9.                             char apellido[50];
  10.                             char telefono[50];
  11.                             char edad[50];
  12.                         } ;
  13.  
  14.                 struct nodo{              //esta es la estructura del nodo
  15.                 tipo s_dato;
  16.                 nodo* s_sig;
  17.                 };
  18.  
  19. void crear(nodo**);
  20. void insertar(nodo**, tipo);
  21. void quitar(nodo**, tipo);
  22. void recorrer(nodo**);
  23. int buscar();
  24.  
  25. int  main()
  26. {
  27. nodo* cabeza;
  28. int dat;
  29. int dato;
  30. char op;
  31.  
  32. struct estudiante x;
  33. crear(&cabeza);
  34. system("pause");
  35.  
  36. df:                               //tambien se puede hacer con do while
  37. cout << "1.-INSERTAR" << endl;
  38. cout << "2.-VER" << endl;
  39. cout << "3.-QUITAR" << endl;
  40. op = getch();
  41. switch(op)
  42. {
  43. case '1':
  44. cout << "introduce un nombre: ";
  45. scanf("%d",&x->nombre);
  46. cout << "introduce un apellido: ";
  47. scanf("%d",&x->apellido);
  48. cout << "introduce un telefono: ";
  49. scanf("%d",&x->telefono);
  50. cout << "introduce un edad: ";
  51. scanf("%d",&x->edad);
  52.  
  53.  
  54. insertar(&cabeza, dat);
  55.  
  56. system("pause");
  57. goto df;
  58.  
  59. case '2':
  60. recorrer(&cabeza);
  61. system("pause");
  62. goto df;
  63.  
  64. case '3':
  65. cout << "introduzca dato a quitar";
  66. cin >> dato;
  67. quitar(&cabeza,dato);
  68. goto df;
  69.  
  70. }
  71. }
  72.  
  73.        void crear(nodo** siguiente)
  74.        {
  75.        *siguiente = NULL;
  76.        }
  77.  
  78.           void insertar(nodo**siguiente, tipo dato)
  79.           {
  80.           struct estudiante *x;
  81.           nodo* aux;
  82.           x=s_sig= NUll;
  83.           aux = estudiante;
  84.           aux->s_dato = dato;
  85.           aux->s_sig = (*siguiente);
  86.           *siguiente = aux;
  87.           }
  88.  
  89.           void quitar(nodo**siguiente, tipo dato)
  90.           {
  91.           nodo* ptr,*ant;
  92.           ptr = *siguiente;
  93.           ant = NULL;
  94.           while (ptr!= NULL && ptr->s_dato!=dato)
  95.           {
  96.           ant = ptr;
  97.           ptr = ptr->s_sig;
  98.  
  99.           }
  100.           if ( ptr->s_dato!=dato)
  101.           {
  102.           cout << "dato no existe";
  103.           }
  104.  
  105.           else
  106.           ant->s_sig = ptr->s_sig;
  107.           delete ptr;
  108.           }
  109.  
  110.  
  111.       void recorrer(nodo**siguiente)
  112.       {
  113.       nodo* ptr;
  114.       ptr = *siguiente;
  115.       while (ptr!= NULL)
  116.       {
  117.       cout << ptr->s_dato << endl;       // aqui es donde necesito mostrar la estructura
  118.  
  119.       ptr=ptr->s_sig;
  120.       }
  121.  
  122. }
  123.  
  124.  


Si pueden me recomendarían algún tutorial donde expliquen el uso listas con ejemplos pero sencillos, que no tengan nombres extraños pues me paso descifrando cual es el puntero para siguiente, cual es el de inicio,por favor una ayuda, que me saque desde hueco de oscuridad.


Título: Re: listas enlazadas
Publicado por: BlackZeroX en 23 Octubre 2011, 22:33 pm

https://secure.wikimedia.org/wikipedia/es/wiki/Lista_%28inform%C3%A1tica%29#Operaciones_sobre_listas_enlazadas

Dulces Lunas!¡.


Título: Re: listas enlazadas
Publicado por: rir3760 en 24 Octubre 2011, 03:54 am
Cursos de calidad sobre listas vinculadas y arboles binarios (pero por desgracia todos en ingles) se pueden descargar de la pagina Stanford CS Education Library (http://cslibrary.stanford.edu/).

Un saludo


Título: Re: listas enlazadas
Publicado por: javier210186 en 25 Octubre 2011, 02:33 am
Cordial saludo, bueno empezare el estudio de los recomendados, pero una ayudita no hubiese quedado mal, de igual forma les agradezco mucho.