UNIT uListaEIF;
INTERFACE
USES uElem;
TYPE
TEnganche = ^TNodo;
TNodo = RECORD
info :TElem;
sig : TEnganche;
END;
TListaEIF = RECORD
cabecera,final:TEnganche;
END;
PROCEDURE CrearListaVacia (VAR lista:TListaEIF);
PROCEDURE InsertarElem (VAR lista:TListaEIF; elem:TElem);
PROCEDURE InsertarFinal (VAR lista:TListaEIF; elem:TElem);
PROCEDURE Resto (VAR lista:TListaEIF);
FUNCTION ListaVacia (lista:TListaEIF):boolean;
PROCEDURE MostrarLista (lista:TListaEIF);
IMPLEMENTATION
PROCEDURE CrearListaVacia (VAR lista:TListaEIF);
BEGIN
lista.cabecera := NIL;
lista.final := NIL;
END;
PROCEDURE InsertarElem (VAR lista:TListaEIF; elem:TElem);
VAR
aux:TEnganche;
BEGIN
new(aux);
Asignar(aux^.info,elem);
aux^.sig := lista.cabecera;
IF ListaVacia(lista) THEN
BEGIN
lista.cabecera := aux;
lista.final := aux;
END
ELSE
BEGIN
lista.cabecera := aux;
END;
END;
PROCEDURE InsertarFinal (VAR lista:TListaEIF; elem:TElem);
VAR
aux:TEnganche;
BEGIN
IF NOT(ListaVacia(lista)) THEN
BEGIN
new(aux);
Asignar(aux^.info,elem);
aux^.sig := NIL;
lista.final^.sig := aux;
lista.final := aux;
END
ELSE
InsertarElem(lista,elem);
END;
PROCEDURE Resto (VAR lista:TListaEIF);
VAR
aux:TEnganche;
BEGIN
aux := lista.cabecera;
lista.cabecera := lista.cabecera^.sig;
dispose(aux);
END;
FUNCTION ListaVacia (lista:TListaEIF):boolean;
BEGIN
ListaVacia := (lista.cabecera = NIL);
END;
PROCEDURE MostrarLista (lista:TListaEIF);
BEGIN
WHILE lista.cabecera<>NIL DO
BEGIN
Mostrar(lista.cabecera^.info);
lista.cabecera := lista.cabecera^.sig;
END;
END;
END.