Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. UNIT uListaEIF;
  2.  
  3.     INTERFACE
  4.         USES uElem;
  5.         TYPE
  6.             TEnganche = ^TNodo;
  7.  
  8.             TNodo = RECORD
  9.                 info :TElem;
  10.                 sig : TEnganche;
  11.                 END;
  12.  
  13.             TListaEIF = RECORD
  14.                 cabecera,final:TEnganche;
  15.                 END;
  16.  
  17.         PROCEDURE CrearListaVacia (VAR lista:TListaEIF);
  18.  
  19.         PROCEDURE InsertarElem (VAR lista:TListaEIF; elem:TElem);
  20.  
  21.         PROCEDURE InsertarFinal (VAR lista:TListaEIF; elem:TElem);
  22.  
  23.         PROCEDURE Resto (VAR lista:TListaEIF);
  24.  
  25.         FUNCTION ListaVacia (lista:TListaEIF):boolean;
  26.  
  27.         PROCEDURE MostrarLista (lista:TListaEIF);
  28.  
  29.     IMPLEMENTATION
  30.  
  31.         PROCEDURE CrearListaVacia (VAR lista:TListaEIF);
  32.             BEGIN
  33.                 lista.cabecera := NIL;
  34.                 lista.final := NIL;
  35.             END;
  36.  
  37.         PROCEDURE InsertarElem (VAR lista:TListaEIF; elem:TElem);
  38.             VAR
  39.                 aux:TEnganche;
  40.             BEGIN
  41.                 new(aux);
  42.                 Asignar(aux^.info,elem);
  43.                 aux^.sig := lista.cabecera;
  44.  
  45.                 IF ListaVacia(lista) THEN
  46.                     BEGIN
  47.                         lista.cabecera := aux;
  48.                         lista.final := aux;
  49.                     END
  50.                 ELSE
  51.                     BEGIN
  52.                         lista.cabecera := aux;
  53.                     END;
  54.             END;
  55.  
  56.         PROCEDURE InsertarFinal (VAR lista:TListaEIF; elem:TElem);
  57.             VAR
  58.                 aux:TEnganche;
  59.             BEGIN
  60.                 IF NOT(ListaVacia(lista)) THEN
  61.                     BEGIN
  62.                         new(aux);
  63.                         Asignar(aux^.info,elem);
  64.                         aux^.sig := NIL;
  65.                         lista.final^.sig := aux;
  66.                         lista.final := aux;
  67.                     END
  68.                 ELSE
  69.                     InsertarElem(lista,elem);
  70.             END;
  71.  
  72.         PROCEDURE Resto (VAR lista:TListaEIF);
  73.             VAR
  74.                 aux:TEnganche;
  75.             BEGIN
  76.                 aux := lista.cabecera;
  77.                 lista.cabecera := lista.cabecera^.sig;
  78.                 dispose(aux);
  79.             END;
  80.  
  81.         FUNCTION ListaVacia (lista:TListaEIF):boolean;
  82.             BEGIN
  83.                 ListaVacia := (lista.cabecera = NIL);
  84.             END;
  85.  
  86.         PROCEDURE MostrarLista (lista:TListaEIF);
  87.             BEGIN
  88.                 WHILE lista.cabecera<>NIL DO
  89.                     BEGIN
  90.                         Mostrar(lista.cabecera^.info);
  91.                         lista.cabecera := lista.cabecera^.sig;
  92.                     END;
  93.             END;
  94. END.