blob: 286998469f95f081c7174018c2319ab8fcadf050 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
package body Queue is
procedure Enqueue(queue: in out T_Queue; data: T_Data) is
element: T_List_Node;
new_back: T_List;
begin
element.data := data;
element.next := null;
new_back := new T_List_Node'(element);
if Empty(queue) then
queue.front := new_back;
queue.back := new_back;
return;
end if;
queue.back.next := new_back;
queue.back := new_back;
end Enqueue;
procedure Dequeue(queue: in out T_Queue) is
begin
if Empty(queue) then
return;
end if;
if queue.front.next = null then
queue.front := null;
queue.back := null;
return;
end if;
queue.front := queue.front.next;
end Dequeue;
function Length(queue: T_Queue) return Natural is
tmp: T_List := queue.front;
i: Natural := 0;
begin
while tmp /= null loop
tmp := tmp.next;
i := i + 1;
end loop;
return i;
end Length;
function Empty(queue: T_Queue) return Boolean is
begin
return queue.front = null and queue.back = null;
end Empty;
end Queue;
|