0% found this document useful (0 votes)
19 views12 pages

Lecture 13 - Queues (LinkedList)

Uploaded by

Engr Sameer Hani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views12 pages

Lecture 13 - Queues (LinkedList)

Uploaded by

Engr Sameer Hani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 12

Data Structures

13. Queues Using Linked List

13-Queues (Linked List) 1


Pointer-based Implementation

13-Queues (Linked List) 2


Pointer-Based Implementation of Queues
• Queue Class maintains two pointers
– front: A pointer to the first element of the queue
– rear: A pointer to the last element of the queue

front x y z .
rear

13-Queues (Linked List) 3


Queue Operations (1)
• MAKENULL(Q)

NULL
front

rear

• ENQUEUE (x, Q)

x .
front

rear

13-Queues (Linked List) 4


Queue Operations
• ENQUEUE(y, Q)

x y .
front
rear

• DEQUEUE (Q)

y .
front
rear

13-Queues (Linked List) 5


Pointer Implementation – Code (1)
class DynIntQueue
{
private:
struct QueueNode // Structure to define linked list node
{
int value;
QueueNode *next;
};
QueueNode *front; // pointer to the first node
QueueNode *rear; // pointer to the last node
int numItems; // Number of nodes in the linked list
public:
DynIntQueue(void);
~DynIntQueue(void);
void enqueue(int);
int dequeue(void);
bool isEmpty(void);
void makeNull(void);
};

13-Queues (Linked List) 6


Pointer Implementation – Code (2)
• Constructor
DynIntQueue::DynIntQueue(void)
{
front = NULL;
rear = NULL;
numItems = 0;
}

• isEmpty() returns true if the queue is full and false


otherwise

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();
}

• makeNull() resets front & rear indices to NULL and sets


numItems to 0

void DynIntQueue::makeNull(void)
{
while(!isEmpty()){
dequeue();
}
}

13-Queues (Linked List) 10


Using Queues Output:
Enqueuing 5 items...
void main(void) The values in the queue were:
{ 0
DynIntQueue iQueue; 1
2
cout << "Enqueuing 5 items...\n";
3
// Enqueue 5 items
for (int x = 0; x < 5; x++) 4
iQueue.enqueue(x);

// Deqeue and retrieve all items in the queue


cout << "The values in the queue were:\n";
while (!iQueue.isEmpty())
{
int value;
value= iQueue.dequeue();
cout << value << endl;
}
}

13-Queues (Linked List) 11


Any Question So Far?

13-Queues (Linked List) 12

You might also like