vean este codigo y ayudenme a ver que hace

yaya
12 de Agosto del 2004
necesito que me ayuden a colocarle comentarios a este codigo para relatar que hace cada procedimiento
gracias...soy algo nuevo en esto y soy autodidacta porque el profe no sabe un carajo....
gracias

#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
typedef struct datos elemento;
struct datos
{
int dato;
elemento *sig();
};
elemento *ne();
main()
{
int stop;
elemento *pri, *seg, *ter, *mov;
pri=ne();
seg=ne();
ter=ne();
pri -> dato=100;
pri -> sig=seg;
seg -> dato=200;
seg -> sig=ter;
ter -> dato=300;
pri -> sig=NULL;
mov= pri;
while (mov!=NULL)
{
printf("%in", mov -> dato*10);
mov = mov ->sig;
}
cin >> stop;
}
elemento *ne()
{
return ((elemento*)malloc(sizeof(elemento)));
}

Zeros Metalium
12 de Agosto del 2004
Bueno, vamos por partes (como dijo Jack el destripador)
Supongamos que las lineas estan numeradas del cero (la del #include <stdio.h>) hasta la ultima.
Las lineas 3 a 8 declaran una estructura que parece ser un nodo (espero que tengas un error de sintaxis en el *sig() porque me parece que los parentesis no van) de una lista enlazada simple que contiene un dato tipo int (entero con signo) y un puntero al siguiente nodo (*sig)
En al linea 9 se declara una funcion (ne que debuelve un puntero a una estructura como0 la que declaramos antes) que se implementa mas abajo y que reserva memoria para esa estructura. Esta es una manera comun de crear nodos de estructuras de datos aunque aca se desaprovecha la funcion porque se podrian haber inicializado el sig a NULL y el dato a alguno que se le pase como parametro.
Asi solo habria que hacer puntero = ne(dato); y tenemos el nodo creado e iniciado para ponerlo a lo ultimo de la lista.
Bueno, ahora la funcion main:
Declaramos una variable que parece no ser necesaria y cuatro punteros a estructuras de datos como la que declaramos arriba.
Segidamente le asigmanos a pri, seg y ter lo que debuelven las funciones ne asi que creamos tres estructuras de datos totalmente vacias.
Ahora llenamos pri, seg y ter con lo0s datos correspondientes. A pri el dato es 100 y el puntero al siguiente apunta a seg. Seg tiene como dato 200 y apunta a ter y ter tiene como dato 300 y apunta a NULL porque esta es la marca que usara el while que viene para determinar cuando se termina de recorrer la lista.
El while:
Bueno, anotate este codigo por algun lado o aprendetelo porque es una manera estandar de recorrer listas simplemente enlazadas y doblemente enlasadas, pilas, colas, arboles y otras estructuras de datos mas retorcidas todavia.
Empieza inicando mov al primer puntero y hace el ciclo mientras mov sea distinto de NULL.
Adentro del ciclo imprimimos el dato de mov (el nodo actual) con printf y hacemos que mov ahora sea el siguiente al que apunta (y si es NULL al volver al while termina el ciclo, como ves NULL sirve de marca para terminar la lista)
cin >> stop hace una pausa hasta que apretas una tecla (la variable stop era para tener un lugar en donde dejar la tecla leida aunque no la usemos un cuerno)
Podes aprender mas sobre listas y otras estructuras dinamicas de datos buscando el fichero edd.pdf en internet que esta en castellano y es muy buena referencia para programadores.

Suerte.