Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. UNIT uListaSim;
  2.  
  3.  
  4.  
  5. INTERFACE
  6.     USES uElem;
  7.  
  8.     TYPE
  9.         TNodo = RECORD
  10.             info:TElem;
  11.             sig:0..5;
  12.         END;
  13.  
  14.         TAlm = ARRAY[1..5] OF TNodo;
  15.  
  16.         TLista = RECORD
  17.             lib,ocu:0..5;
  18.             alm:TAlm;
  19.         END;
  20.  
  21.     PROCEDURE CrearListaVacia (VAR lista:TLista);
  22.  
  23.     PROCEDURE InsertarLista (VAR lista:TLista; e:TElem);
  24.  
  25.     PROCEDURE BorrarElem (VAR lista:TLista; e:TElem);
  26.  
  27. IMPLEMENTATION
  28.  
  29.     PROCEDURE CrearListaVacia (VAR lista:TLista);
  30.         VAR
  31.             i:integer;
  32.         BEGIN
  33.             FOR i:=1 TO 4 DO
  34.                 lista.alm[i].sig := succ(i);
  35.  
  36.             lista.ocu := 0;
  37.             lista.lib := 1;
  38.             lista.alm[5].sig := 0;
  39.  
  40.         END;{CrearListaVacia}
  41.  
  42.     PROCEDURE InsertarLista (VAR lista:TLista; e:TElem);
  43.         VAR
  44.             aux:0..5;
  45.         BEGIN
  46.             Asignar( lista.alm[lista.lib].info , e );
  47.             aux := lista.alm[lista.lib].sig;
  48.             lista.alm[lista.lib].sig := lista.ocu;
  49.             lista.ocu := lista.lib;
  50.             lista.lib := aux;
  51.  
  52.         END;{InsertarLista}
  53.  
  54.     PROCEDURE BorrarElem (VAR lista:TLista; e:TElem);
  55.         VAR
  56.             ant,act : 0..5;
  57.         BEGIN
  58.             ant := 0;
  59.             act := lista.ocu;
  60.  
  61.             WHILE (act<=5) AND NOT(Iguales(lista.alm[act].info , e)) DO
  62.                 BEGIN
  63.                     ant := act;
  64.                     act := lista.alm[act].sig;
  65.  
  66.                 END;{WHILE}
  67.  
  68.             IF {act<=5} act<>0 THEN
  69.                 BEGIN
  70.                     IF ant=0 THEN
  71.                         BEGIN
  72.                             lista.ocu := lista.alm[act].sig;
  73.                         END{IF}
  74.                     ELSE
  75.                         lista.alm[ant].sig := lista.alm[act].sig;
  76.  
  77.                     lista.alm[act].sig := lista.lib;
  78.                     lista.lib := act;
  79.                 END;
  80.  
  81.         END;{BorrarElem}
  82.  
  83.  
  84.  
  85. END.