home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* FIFOQUEU.PAS *)
- (* enthält die Funktionen zur Realisation einer *)
- (* dynamischen Warteschlange *)
- (* (c) 1991 Andreas Tengicki & DMV-Verlag *)
- (* ------------------------------------------------------ *)
- UNIT FiFoQueu;
-
- INTERFACE
-
- TYPE
- FiFo_Element = RECORD
- Satz : STRING;
- Last : STRING;
- Count : INTEGER;
- END;
-
- FiFo_Satz_Ptr = ^FiFo_Satz;
- FiFo_Satz = RECORD
- Wert : FiFo_Element;
- Next : FiFo_Satz_Ptr;
- END;
-
- (* --- Dynamische Version ----------------------------- *)
-
- PROCEDURE FiFo_Init_d(VAR Inp, Out : FiFo_Satz_Ptr);
- PROCEDURE FiFo_In_d (VAR Inp, Out : FiFo_Satz_Ptr;
- Element : FiFo_Element);
- PROCEDURE FiFo_Out_d (VAR Inp, Out : FiFo_Satz_Ptr;
- VAR Element : FiFo_Element);
-
- IMPLEMENTATION
-
- PROCEDURE FiFo_Init_d(VAR Inp, Out : FiFo_Satz_Ptr);
- (* initialisiert die dynamische FIFO-Schlange *)
- BEGIN
- Inp := NIL;
- Out := NIL;
- END;
-
- PROCEDURE FiFo_In_d(VAR Inp, Out : FiFo_Satz_Ptr;
- Element : FiFo_Element);
- (* fügt ein Element in die dyn. FIFO-Schlange *)
- VAR
- h : FiFo_Satz_Ptr;
- BEGIN
- h := Inp;
- New(Inp);
- Inp^.Wert := Element;
- Inp^.Next := NIL;
- IF h = NIL THEN
- Out := Inp { 1.Element }
- ELSE
- h^.Next := Inp; { sonst ... }
- END;
-
- PROCEDURE FiFo_Out_d(VAR Inp, Out : FiFo_Satz_Ptr;
- VAR Element : FiFo_Element);
- (* löscht ein Element aus der dyn. FIFO-Schl. *)
- VAR
- h : FiFo_Satz_Ptr;
- BEGIN
- IF Out = NIL THEN BEGIN { leere Warteschlange }
- WriteLn('Fehler in der Warteschlange.');
- Halt;
- END ELSE BEGIN
- Element := Out^.Wert;
- h := Out;
- Out := Out^.Next;
- Dispose(h);
- IF Out = NIL THEN Inp := NIL; { letztes Element }
- END;
- END;
-
- END.
- (* ------------------------------------------------------ *)
- (* Ende von FIFOQUEU.PAS *)
-