Queue/Usage: Difference between revisions
Content added Content deleted
(Added PicoLisp) |
|||
Line 509: | Line 509: | ||
(a b c) |
(a b c) |
||
NIL</pre> |
NIL</pre> |
||
=={{header|PL/I}}== |
|||
<lang PL/I> |
|||
test: proc options (main); |
|||
/* To implement a queue. */ |
|||
define structure |
|||
1 node, |
|||
2 value fixed, |
|||
2 link handle(node); |
|||
declare (head, tail, t) handle (node); |
|||
declare null builtin; |
|||
declare i fixed binary; |
|||
head, tail = bind(:node, null:); |
|||
do i = 1 to 10; /* Add ten items to the tail of the queue. */ |
|||
if head = bind(:node, null:) then |
|||
do; |
|||
head,tail = new(:node:); |
|||
get list (head => value); |
|||
put skip list (head => value); |
|||
head => link = bind(:node, null:); /* A NULL link */ |
|||
end; |
|||
else |
|||
do; |
|||
t = new(:node:); |
|||
tail => link = t; /* Point the tail to the new node. */ |
|||
tail = t; |
|||
tail => link = bind(:node, null:); /* Set the tail link to NULL */ |
|||
get list (tail => value) copy; |
|||
put skip list (tail => value); |
|||
end; |
|||
end; |
|||
/* Pop all the items in the queue. */ |
|||
put skip list ('The queue has:'); |
|||
do while (head ^= bind(:node, null:)); |
|||
put skip list (head => value); |
|||
head = head => link; |
|||
end; |
|||
end test; |
|||
</lang> |
|||
The output: |
|||
<lang> |
|||
1 |
|||
3 |
|||
5 |
|||
7 |
|||
9 |
|||
11 |
|||
13 |
|||
15 |
|||
17 |
|||
19 |
|||
The queue has: |
|||
1 |
|||
3 |
|||
5 |
|||
7 |
|||
9 |
|||
11 |
|||
13 |
|||
15 |
|||
17 |
|||
</lang> |
|||
=={{header|Python}}== |
=={{header|Python}}== |