Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. UNIT uCola;
  2.  
  3. INTERFACE
  4.  
  5. USES uElem;
  6.  
  7.     TYPE
  8.         TAlmacen = ^TNodo;
  9.  
  10.         TNodo = RECORD
  11.             info:TElem;
  12.             sig:TAlmacen;
  13.         END;
  14.  
  15.         TCola = RECORD
  16.             cab,fin:TAlmacen;
  17.         END;
  18.  
  19.     PROCEDURE CrearColaVacia (VAR cola:TCola);
  20.  
  21.     PROCEDURE InsertarCola (VAR cola:TCola; elem:TElem);
  22.  
  23.     PROCEDURE Eliminar (VAR cola:TCola);
  24.  
  25.     PROCEDURE Cabecera (cola:TCola; VAR elem:TElem);
  26.  
  27.     PROCEDURE Ultimo (cola:TCola; VAR elem:TElem);
  28.  
  29.     FUNCTION Pertenece (cola:TCola; elem:TElem):boolean;
  30.  
  31.     FUNCTION EsColaVacia (cola:TCola):boolean;
  32.  
  33.     PROCEDURE CopiarCola (cola:TCola ; VAR colaCopia:TCola);
  34.  
  35.  
  36. IMPLEMENTATION
  37.  
  38.     PROCEDURE CrearColaVacia (VAR cola:TCola);
  39.         BEGIN
  40.             cola.cab := NIL;
  41.             cola.fin := NIL;
  42.  
  43.         END;{CrearColaVacia}
  44.  
  45.     PROCEDURE InsertarCola (VAR cola:TCola; elem:TElem);
  46.         VAR
  47.             aux:TAlmacen;
  48.         BEGIN
  49.  
  50.             new(aux);
  51.             Asignar(aux^.info,elem);
  52.             aux^.sig := NIL;
  53.  
  54.             IF EsColaVacia(cola) THEN
  55.                 BEGIN
  56.                     cola.cab := aux;
  57.                     cola.fin := aux;
  58.                 END {IF}
  59.             ELSE
  60.                 BEGIN
  61.                     cola.fin^.sig := aux;
  62.                     cola.fin := aux;
  63.                 END;{ELSE}
  64.  
  65.         END;{CrearColaVacia}
  66.  
  67.     PROCEDURE Eliminar (VAR cola:TCola);
  68.         VAR
  69.             aux:TAlmacen;
  70.         BEGIN
  71.             IF NOT(EsColaVacia(cola)) THEN
  72.                 BEGIN
  73.                     aux := cola.cab;
  74.  
  75.                     cola.cab := cola.cab^.sig;
  76.  
  77.                     dispose(aux);
  78.  
  79.                 END;{IF}
  80.  
  81.         END;{CrearColaVacia}
  82.  
  83.     PROCEDURE Cabecera (cola:TCola; VAR elem:TElem);
  84.         BEGIN
  85.             IF NOT(EsColaVacia(cola)) THEN
  86.                 Asignar(elem , cola.cab^.info);
  87.  
  88.         END;{CrearColaVacia}
  89.  
  90.     PROCEDURE Ultimo (cola:TCola; VAR elem:TElem);
  91.         BEGIN
  92.             IF NOT(EsColaVacia(cola)) THEN
  93.                 Asignar(elem , cola.fin^.info);
  94.  
  95.         END;{CrearColaVacia}
  96.  
  97.     FUNCTION Pertenece (cola:TCola; elem:TElem):boolean;
  98.         VAR
  99.             check:boolean;
  100.         BEGIN
  101.             check := FALSE;
  102.  
  103.             WHILE (check=FALSE) AND NOT(EsColaVacia(cola)) DO
  104.                 BEGIN
  105.                     check := Iguales(cola.cab^.info , elem);
  106.                     cola.cab := cola.cab^.sig;
  107.                 END;{WHILE}
  108.  
  109.             Pertenece := check;
  110.         END;{CrearColaVacia}
  111.  
  112.     FUNCTION EsColaVacia (cola:TCola):boolean;
  113.         BEGIN
  114.             EsColaVacia := (cola.cab = NIL);
  115.  
  116.         END;{CrearColaVacia}
  117.  
  118.     PROCEDURE CopiarCola (cola:TCola ; VAR colaCopia:TCola);
  119.         VAR
  120.             aux:TAlmacen;
  121.             elem:TElem;
  122.         BEGIN
  123.             WHILE NOT(EsColaVacia(cola)) DO
  124.                 BEGIN
  125.                     Cabecera(cola,elem);
  126.                     IF EsColaVacia(colaCopia) THEN
  127.                         BEGIN
  128.                             new(aux);
  129.                             Asignar(aux^.info,elem);
  130.                             aux^.sig := NIL;
  131.                             colaCopia.cab := aux;
  132.                             colaCopia.fin := aux;
  133.                         END{IF}
  134.                     ELSE
  135.                         BEGIN
  136.                             new(aux);
  137.                             Asignar(aux^.info,elem);
  138.                             aux^.sig := NIL;
  139.                             colaCopia.fin^.sig := aux;
  140.                             colaCopia.fin := aux;
  141.  
  142.  
  143.                         END;{ELSE}
  144.                     cola.cab := cola.cab^.sig;
  145.                 END;{WHILE}
  146.         END;{CrearColaVacia}
  147.  
  148.  
  149. END.