
Data Structure

This illustrates a data structure, a means of storing data within a program.

You may see other such structures in the Data Structures category.
 Illustration of FIFO behavior
Task

Implement a FIFO queue.

Elements are added at one side and popped from the other in the order of insertion.



Operations:

   push   (aka enqueue)    - add element
   pop     (aka dequeue)    - pop first element
   empty                             - return truth value when empty


Errors:

   handle the error of trying to pop from an empty queue (behavior depends on the language and platform)


See

   Queue/Usage   for the built-in FIFO or queue of your language or standard library.


See also

 Array
 Associative array: Creation, Iteration
 Collections
 Compound data type
 Doubly-linked list: Definition, Element definition, Element insertion, List Traversal, Element Removal
 Linked list
 Queue: Definition, Usage
 Set
 Singly-linked list: Element definition, Element insertion, List Traversal, Element Removal
 Stack


program QueueDefinition;
 
{$APPTYPE CONSOLE}
 
uses
  System.Generics.Collections;
 
type
  TQueue = System.Generics.Collections.TQueue<Integer>;
 
  TQueueHelper = class helper for TQueue
    function Empty: Boolean;
    function Pop: Integer;
    procedure Push(const NewItem: Integer);
  end;
 
{ TQueueHelper }
 
function TQueueHelper.Empty: Boolean;
begin
  Result := count = 0;
end;
 
function TQueueHelper.Pop: Integer;
begin
  Result := Dequeue;
end;
 
procedure TQueueHelper.Push(const NewItem: Integer);
begin
  Enqueue(NewItem);
end;
 
var
  Queue: TQueue;
  i: Integer;
 
begin
  Queue := TQueue.Create;
 
  for i := 1 to 1000 do
    Queue.push(i);
 
  while not Queue.Empty do
    Write(Queue.pop, ' ');
  Writeln;
 
  Queue.Free;
  Readln;
end.
 