Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. UNIT uListaCirc;
  2.  
  3. INTERFACE
  4. USES uElem;
  5.     TYPE
  6.         TNodo = ^TEnganche;
  7.  
  8.         TEnganche = RECORD
  9.             info:TElem;
  10.             sig:TNodo;
  11.         END;
  12.  
  13.         TLista = TNodo;
  14.  
  15.  
  16.     PROCEDURE CrearListaVacia (VAR lista:TLista);
  17.  
  18.     PROCEDURE Insertar (VAR lista:TLista; elem:TElem);
  19.  
  20.     PROCEDURE InsertarFinal (VAR lista:TLista; elem:TElem);
  21.  
  22.     FUNCTION EsListaVacia (lista:TLista):boolean;
  23.  
  24.     PROCEDURE MostrarLista (lista:TLista);
  25.  
  26.     PROCEDURE Resto (VAR lista:TLista);
  27.  
  28.     PROCEDURE BorrarLista (VAR lista:TLista);
  29.  
  30.     {Eliminar Elemento}
  31.  
  32.  
  33. IMPLEMENTATION
  34.     PROCEDURE CrearListaVacia (VAR lista:TLista);
  35.         BEGIN
  36.             lista := NIL;
  37.         END;
  38.  
  39.     PROCEDURE Insertar (VAR lista:TLista; elem:TElem);
  40.         VAR
  41.             aux:TNodo;
  42.         BEGIN
  43.             new(aux);
  44.             Asignar(aux^.info,elem);
  45.  
  46.             IF EsListaVacia(lista) THEN
  47.                 BEGIN
  48.                     aux^.sig := aux;
  49.                     lista := aux;
  50.                 END
  51.             ELSE
  52.                 BEGIN
  53.                     aux^.sig := lista^.sig;
  54.                     lista^.sig := aux;
  55.                 END;
  56.         END;
  57.     PROCEDURE InsertarFinal (VAR lista:TLista; elem:TElem);
  58.         VAR
  59.             aux:TNodo;
  60.         BEGIN
  61.             IF EsListaVacia(lista) THEN
  62.                 Insertar(lista,elem)
  63.             ELSE
  64.                 BEGIN
  65.                     new(aux);
  66.                     Asignar(aux^.info,elem);
  67.                     aux^.sig := lista^.sig;
  68.                     lista^.sig := aux;
  69.                     lista := aux;
  70.                 END;
  71.         END;
  72.     FUNCTION EsListaVacia (lista:TLista):boolean;
  73.         BEGIN
  74.             EsListaVacia := (lista = NIL);
  75.         END;
  76.     PROCEDURE MostrarLista (lista:TLista);
  77.         VAR
  78.             aux : TLista;
  79.         BEGIN
  80.  
  81.         IF lista<>NIL THEN
  82.             BEGIN
  83.                 aux := lista^.sig;
  84.  
  85.                 Mostrar(lista^.sig^.info);
  86.  
  87.                 lista:=lista^.sig^.sig;
  88.  
  89.                 WHILE lista<>aux DO
  90.                     BEGIN
  91.                         Mostrar(lista^.info);
  92.                         lista := lista^.sig;
  93.                     END;
  94.  
  95.  
  96.             END;
  97.         END;
  98.  
  99.  
  100.     PROCEDURE Resto (VAR lista:TLista);
  101.         VAR
  102.             aux : TNodo;
  103.         BEGIN
  104.             IF NOT(EsListaVacia(lista)) THEN
  105.                 IF (lista = lista^.sig) THEN
  106.                     dispose(lista)
  107.                 ELSE
  108.                     BEGIN
  109.                         aux := lista^.sig;
  110.                         lista^.sig := lista^.sig^.sig;
  111.                         dispose(aux);
  112.                     END;
  113.         END;
  114.  
  115.  
  116.     PROCEDURE BorrarLista (VAR lista:TLista);
  117.         BEGIN
  118.             IF NOT(EsListaVacia(lista)) THEN
  119.                 WHILE lista<>NIL DO
  120.                     Resto(lista);
  121.         END;
  122.  
  123. END.