El procedimiento CREA_LISTA nos va a permitir crear una lista enlazada principal de tipo NODO
Sean los siguientes tipos:
TYPE
T_NODO = ^NODO;
NODO = RECORD
nombre : string;
sig : T_NODO;
END;
T_NODO = ^NODO;
NODO = RECORD
nombre : string;
sig : T_NODO;
END;
El procedimiento sería el siguiente:
PROCEDURE CREA_LISTA(VAR lista : T_NODO;VAR fich :TEXT);
VAR
aux,aux2 : T_NODO;
cad,cad2 : INTEGER;
BEGIN
//Inicializamos la lista
lista:=NIL;
//Abrimos el fichero del que vamos a tomar los datos en modo lectura
RESET(fich);
//Vamos a ir leyendo línea a línea hasta el final
WHILE NOT(EOF(fich)) DO
BEGIN
READLN(fich,cad);
NEW(aux);
aux^.nombre:=COPY(cad,1,POS(‘,’,cad)-2);
DELETE(cad,1,POS(cad,1,POS(‘,’,cad)));
//En este punto añadimos los nuevos nodos a la lista
IF lista=NIL THEN
BEGIN
lista:=aux;
aux2:=lista;
END
ELSE
BEGIN
aux2^.sig:=aux;
aux2:=aux2^.sig;
END;
END;
aux2^.sig:=NIL;
//Cerramos el fichero del cual hemos tomado los datos
CLOSE(fich);
END;
VAR
aux,aux2 : T_NODO;
cad,cad2 : INTEGER;
BEGIN
//Inicializamos la lista
lista:=NIL;
//Abrimos el fichero del que vamos a tomar los datos en modo lectura
RESET(fich);
//Vamos a ir leyendo línea a línea hasta el final
WHILE NOT(EOF(fich)) DO
BEGIN
READLN(fich,cad);
NEW(aux);
aux^.nombre:=COPY(cad,1,POS(‘,’,cad)-2);
DELETE(cad,1,POS(cad,1,POS(‘,’,cad)));
//En este punto añadimos los nuevos nodos a la lista
IF lista=NIL THEN
BEGIN
lista:=aux;
aux2:=lista;
END
ELSE
BEGIN
aux2^.sig:=aux;
aux2:=aux2^.sig;
END;
END;
aux2^.sig:=NIL;
//Cerramos el fichero del cual hemos tomado los datos
CLOSE(fich);
END;