UNIT uListaSim;
INTERFACE
USES uElem;
TYPE
TNodo = RECORD
info:TElem;
sig:0..5;
END;
TAlm = ARRAY[1..5] OF TNodo;
TLista = RECORD
lib,ocu:0..5;
alm:TAlm;
END;
PROCEDURE CrearListaVacia (VAR lista:TLista);
PROCEDURE InsertarLista (VAR lista:TLista; e:TElem);
PROCEDURE BorrarElem (VAR lista:TLista; e:TElem);
IMPLEMENTATION
PROCEDURE CrearListaVacia (VAR lista:TLista);
VAR
i:integer;
BEGIN
FOR i:=1 TO 4 DO
lista.alm[i].sig := succ(i);
lista.ocu := 0;
lista.lib := 1;
lista.alm[5].sig := 0;
END;{CrearListaVacia}
PROCEDURE InsertarLista (VAR lista:TLista; e:TElem);
VAR
aux:0..5;
BEGIN
Asignar( lista.alm[lista.lib].info , e );
aux := lista.alm[lista.lib].sig;
lista.alm[lista.lib].sig := lista.ocu;
lista.ocu := lista.lib;
lista.lib := aux;
END;{InsertarLista}
PROCEDURE BorrarElem (VAR lista:TLista; e:TElem);
VAR
ant,act : 0..5;
BEGIN
ant := 0;
act := lista.ocu;
WHILE (act<=5) AND NOT(Iguales(lista.alm[act].info , e)) DO
BEGIN
ant := act;
act := lista.alm[act].sig;
END;{WHILE}
IF {act<=5} act<>0 THEN
BEGIN
IF ant=0 THEN
BEGIN
lista.ocu := lista.alm[act].sig;
END{IF}
ELSE
lista.alm[ant].sig := lista.alm[act].sig;
lista.alm[act].sig := lista.lib;
lista.lib := act;
END;
END;{BorrarElem}
END.