Lecture 13 - Queues (LinkedList)
Lecture 13 - Queues (LinkedList)
front x y z .
rear
NULL
front
rear
• ENQUEUE (x, Q)
x .
front
rear
x y .
front
rear
• DEQUEUE (Q)
y .
front
rear
bool DynIntQueue::isEmpty(void)
{
if (numItems)
return false;
else
return true;
}
13-Queues (Linked List) 7
Array Implementation – Code (3)
• Function enqueue inserts the value in num at the end of
Queue
void DynIntQueue::enqueue(int num)
{
QueueNode *newNode;
newNode = new QueueNode;
newNode->value = num;
newNode->next = NULL;
if (isEmpty()) {
front = newNode;
rear = newNode;
}
else {
rear->next = newNode;
rear = newNode;
}
numItems++;
}
13-Queues (Linked List) 8
Array Implementation – Code (4)
• Function dequeue removes and returns the value at the
front of the Queue
int DynIntQueue::dequeue(void)
{
QueueNode *temp;
int num;
if (isEmpty())
cout << "The queue is empty.\n";
else {
num = front->value;
temp = front->next;
delete front;
front = temp;
numItems--;
if(!numItems) rear = NULL;
}
return num;
}
13-Queues (Linked List) 9
Pointer Implementation – Code (5)
• Destructor
DynIntQueue::~DynIntQueue(void)
{
makeNull();
}
void DynIntQueue::makeNull(void)
{
while(!isEmpty()){
dequeue();
}
}