tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
101
Task/Queue-Definition/Pascal/queue-definition.pascal
Normal file
101
Task/Queue-Definition/Pascal/queue-definition.pascal
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
program fifo(input, output);
|
||||
|
||||
type
|
||||
pNode = ^tNode;
|
||||
tNode = record
|
||||
value: integer;
|
||||
next: pNode;
|
||||
end;
|
||||
|
||||
tFifo = record
|
||||
first, last: pNode;
|
||||
end;
|
||||
|
||||
procedure initFifo(var fifo: tFifo);
|
||||
begin
|
||||
fifo.first := nil;
|
||||
fifo.last := nil
|
||||
end;
|
||||
|
||||
procedure pushFifo(var fifo: tFifo; value: integer);
|
||||
var
|
||||
node: pNode;
|
||||
begin
|
||||
new(node);
|
||||
node^.value := value;
|
||||
node^.next := nil;
|
||||
if fifo.first = nil
|
||||
then
|
||||
fifo.first := node
|
||||
else
|
||||
fifo.last^.next := node;
|
||||
fifo.last := node
|
||||
end;
|
||||
|
||||
function popFifo(var fifo: tFifo; var value: integer): boolean;
|
||||
var
|
||||
node: pNode;
|
||||
begin
|
||||
if fifo.first = nil
|
||||
then
|
||||
popFifo := false
|
||||
else
|
||||
begin
|
||||
node := fifo.first;
|
||||
fifo.first := fifo.first^.next;
|
||||
value := node^.value;
|
||||
dispose(node);
|
||||
popFifo := true
|
||||
end
|
||||
end;
|
||||
|
||||
procedure testFifo;
|
||||
var
|
||||
fifo: tFifo;
|
||||
procedure testpop(expectEmpty: boolean; expectedValue: integer);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
if popFifo(fifo, i)
|
||||
then
|
||||
if expectEmpty
|
||||
then
|
||||
writeln('Error! Expected empty, got ', i, '.')
|
||||
else
|
||||
if i = expectedValue
|
||||
then
|
||||
writeln('Ok, got ', i, '.')
|
||||
else
|
||||
writeln('Error! Expected ', expectedValue, ', got ', i, '.')
|
||||
else
|
||||
if expectEmpty
|
||||
then
|
||||
writeln('Ok, fifo is empty.')
|
||||
else
|
||||
writeln('Error! Expected ', expectedValue, ', found fifo empty.')
|
||||
end;
|
||||
begin
|
||||
initFifo(fifo);
|
||||
pushFifo(fifo, 2);
|
||||
pushFifo(fifo, 3);
|
||||
pushFifo(fifo, 5);
|
||||
testpop(false, 2);
|
||||
pushFifo(fifo, 7);
|
||||
testpop(false, 3);
|
||||
testpop(false, 5);
|
||||
pushFifo(fifo, 11);
|
||||
testpop(false, 7);
|
||||
testpop(false, 11);
|
||||
pushFifo(fifo, 13);
|
||||
testpop(false, 13);
|
||||
testpop(true, 0);
|
||||
pushFifo(fifo, 17);
|
||||
testpop(false, 17);
|
||||
testpop(true, 0)
|
||||
end;
|
||||
|
||||
begin
|
||||
writeln('Testing fifo implementation ...');
|
||||
testFifo;
|
||||
writeln('Testing finished.')
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue