Group 2: IsEmpty, IsFull, Serve

A 'Queue' is a 'First-In-First-Out' list where you insert new elements at the tail and remove existing elements from the head. The operations on a queue are MakeEmptyQueue, Enqueue, Serve, IsEmpty, IsFull.
Your Task:
Impelement the IsEmpty, the IsFull, and the Serve procedures, as detailed below. Start with the IsEmpty and IsFull functions, both of which are basically only one line. Then discuss the Serve routine, which is a little more complicated. When you are done, post all three routines as three seperate postings on our bulletin board and we will discuss the routines together.
You have 15 minutes to come up with the three routines. Select one person as speaker of the group. When you have come up with your answer, the speaker should post the solutions on the bulletin board as three seperate postings. Each of you might want to bring up Notepad for taking notes, if you like.

StdElement = Char;
NodePointer = ^Node;
Node = Record
             Data: StdElement;
             Next: NodePointer;
Queue = Record
              Head, Tail : NodePointer;

function IsEmpty(Q: Queue): boolean;
{ PRE:  none }
{ POST: If the queue is emtpy, returns true, else returns false }
function IsFull(Q: Queue): boolean;
{ PRE:  none }
{ POST: If the queue is full, returns true, else returns false }
procedure Serve(var Q: Queue; var el: StdElement);
{ PRE:  The queue is not empty }
{ POST: The least recently arrived (i.e. the 'oldest') element is removed }
{       from the queue, and returned in el }