listas enlazadas

Iniciado por javier210186, 23 Octubre 2011, 22:10 PM

0 Miembros y 1 Visitante están viendo este tema.

javier210186

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 (cpp) [Seleccionar]
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

typedef int tipo;

                 struct estudiante
                         {   char nombre[50];
                             char apellido[50];
                             char telefono[50];
                             char edad[50];
                         } ;
                         
                 struct nodo{              //esta es la estructura del nodo
                 tipo s_dato;
                 nodo* s_sig;
                 };

void crear(nodo**);
void insertar(nodo**, tipo);
void quitar(nodo**, tipo);
void recorrer(nodo**);
int buscar();

int  main()
{
nodo* cabeza;
int dat;
int dato;
char op;

struct estudiante x;
crear(&cabeza);
system("pause");

df:                               //tambien se puede hacer con do while
cout << "1.-INSERTAR" << endl;
cout << "2.-VER" << endl;
cout << "3.-QUITAR" << endl;
op = getch();
switch(op)
{
case '1':
cout << "introduce un nombre: ";
scanf("%d",&x->nombre);
cout << "introduce un apellido: ";
scanf("%d",&x->apellido);
cout << "introduce un telefono: ";
scanf("%d",&x->telefono);
cout << "introduce un edad: ";
scanf("%d",&x->edad);


insertar(&cabeza, dat);

system("pause");
goto df;

case '2':
recorrer(&cabeza);
system("pause");
goto df;

case '3':
cout << "introduzca dato a quitar";
cin >> dato;
quitar(&cabeza,dato);
goto df;

}
}

        void crear(nodo** siguiente)
        {
        *siguiente = NULL;
        }

           void insertar(nodo**siguiente, tipo dato)
           {
           struct estudiante *x;
           nodo* aux;
           x=s_sig= NUll;
           aux = estudiante;
           aux->s_dato = dato;
           aux->s_sig = (*siguiente);
           *siguiente = aux;
           }

           void quitar(nodo**siguiente, tipo dato)
           {
           nodo* ptr,*ant;
           ptr = *siguiente;
           ant = NULL;
           while (ptr!= NULL && ptr->s_dato!=dato)
           {
           ant = ptr;
           ptr = ptr->s_sig;

           }
           if ( ptr->s_dato!=dato)
           {
           cout << "dato no existe";
           }

           else
           ant->s_sig = ptr->s_sig;
           delete ptr;
           }


       void recorrer(nodo**siguiente)
       {
       nodo* ptr;
       ptr = *siguiente;
       while (ptr!= NULL)
       {
       cout << ptr->s_dato << endl;       // aqui es donde necesito mostrar la estructura

       ptr=ptr->s_sig;
       }

}




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.

BlackZeroX

The Dark Shadow is my passion.

rir3760

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.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

javier210186

Cordial saludo, bueno empezare el estudio de los recomendados, pero una ayudita no hubiese quedado mal, de igual forma les agradezco mucho.