home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 26 / CD_ASCQ_26_1295.iso / voxrom / textes / repwin08 / annexes / accroc / fifo.pas next >
Pascal/Delphi Source File  |  1995-10-01  |  1KB  |  59 lines

  1. unit FIFO; {files d'attentes ou queues}
  2.  
  3. INTERFACE
  4.  
  5. type TDonnee = Integer;
  6.  
  7. type PQueue = ^Cellule;
  8.      Cellule = record
  9.                  nb:TDonnee;
  10.                  next:PQueue;
  11.                end;
  12.  
  13. procedure init_queue(var head,tail:PQueue); {initialise la queue}
  14.  
  15. procedure entrer_elem(var head:PQueue;var tail:PQueue;item:TDonnee);
  16. {entre un élément 'item' dans la file d'attente}
  17.  
  18. procedure sortir_elem(var head:PQueue;var tail:PQueue;var item:TDonnee;var flag:boolean);
  19. {ressort le prochain élément de la fine d'attente dans la variable item.
  20. Le flag est true si l'opération c'est bien déroulée (autrement dit, s'il y
  21. avait encore du monde dans la file ;-)}
  22.  
  23. IMPLEMENTATION
  24.  
  25. procedure init_queue(var head,tail:PQueue);
  26. begin
  27.   head:=nil;
  28.   tail:=nil;
  29. end;
  30.  
  31. procedure entrer_elem(var head:PQueue;var tail:PQueue;item:TDonnee);
  32. var ptr:PQueue;
  33. begin
  34.   new(ptr);
  35.   ptr^.nb:=item;
  36.   ptr^.next:=nil;
  37.   if head=nil
  38.     then head:=ptr
  39.     else tail^.next:=ptr;
  40.   tail:=ptr;
  41. end;
  42.  
  43. procedure sortir_elem(var head:PQueue;var tail:PQueue;var item:TDonnee;var flag:boolean);
  44. var ptr:PQueue;
  45. begin
  46.   if head=nil
  47.     then flag:=false
  48.     else begin
  49.            flag:=true;
  50.            ptr:=head;
  51.            head:=head^.next;
  52.            item:=ptr^.nb;
  53.            dispose(ptr);
  54.          end;
  55. end;
  56.  
  57. END.
  58.  
  59.