From e0dd50831fd19e1145897de8af909002c2821376 Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 7 Dec 2019 17:27:41 +0100 Subject: Basic Queue package --- queue.ads | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'queue.ads') diff --git a/queue.ads b/queue.ads index e0da54c..d573490 100644 --- a/queue.ads +++ b/queue.ads @@ -1,21 +1,25 @@ generic - type T_Data is limited private; + type T_Data is private; package Queue is - type T_Queue is record - front: T_List; - back: T_List; - end record; - - type T_List_Cell; - type T_List is access T_List_Cell; - type T_List_Cell is record + type T_List_Node; + type T_List is access all T_List_Node; + type T_List_Node is record data: T_Data; next: T_List; end record; - procedure Enqueue(queue: T_Queue; - data: T_Data); - procedure Dequeue(queue: T_Queue); + type T_Queue is record + front: T_List := null; + back: T_List := null; + end record; + + procedure Enqueue(queue: in out T_Queue; data: T_Data); + procedure Dequeue(queue: in out T_Queue); + function Length(queue: T_Queue) return Natural; + +private + + function Empty(queue: T_Queue) return Boolean; end Queue; -- cgit