Download presentation
Presentation is loading. Please wait.
Published byHana Calk Modified over 9 years ago
1
Queues CS 3358 – Data Structures
2
What is a queue? It is an ordered group of homogeneous items of elements. Queues have two ends: – Elements are added at one end. – Elements are removed from the other end. The element added first is also removed first (FIFO: First In, First Out).
3
Queue Specification Definitions: (provided by the user) – MAX_ITEMS: Max number of items that might be on the queue – ItemType: Data type of the items on the queue Operations –MakeEmpty –Boolean IsEmpty –Boolean IsFull –Enqueue (const ItemType & newItem) –ItemType Dequeue()
4
void Enqueue (const ItemType& newItem) Function: Adds newItem to the rear of the queue. Preconditions: Queue has been initialized and is not full. Postconditions: newItem is at rear of queue.
5
ItemType Dequeue () Function: Removes front item from queue and returns it in item. Preconditions: Queue has been initialized and is not empty. Postconditions: Front element has been removed from queue and is returned.
6
Implementation issues Implement the queue as a circular structure. How do we know if a queue is full or empty? Initialization of front and rear. Testing for a full or empty queue.
9
Make front point to the element preceding the front element in the queue (one memory location will be wasted).
10
Initialize front and rear
11
Queue is empty now!! rear == front
12
Queue overflow The condition resulting from trying to add an element onto a full queue. if(!q.IsFull()) q.Enqueue(item);
13
Queue underflow The condition resulting from trying to remove an element from an empty queue. if(!q.IsEmpty()) q.Dequeue(item);
14
Example: recognizing palindromes A palindrome is a string that reads the same forward and backward. Able was I ere I saw Elba We will read the line of text into both a stack and a queue. Compare the contents of the stack and the queue character-by-character to see if they would produce the same string of characters.
15
Example: recognizing palindromes
16
#include #include "stack.h" #include "queue.h“ int main() { StackType s; QueType q; char ch; char sItem, qItem; int mismatches = 0; cout << "Enter string: " << endl; while(cin.peek() != '\\n') { cin >> ch; if(isalpha(ch)) { if(!s.IsFull()) s.Push(toupper(ch)); if(!q.IsFull()) q.Enqueue(toupper(ch)); }
17
Example: recognizing palindromes while( (!q.IsEmpty()) && (!s.IsEmpty()) ) { s.Pop(sItem); q.Dequeue(qItem); if(sItem != qItem) ++mismatches; } if (mismatches == 0) cout << "That is a palindrome" << endl; else cout << That is not a palindrome" << endl; return 0; }
18
Case Study: Simulation Queuing System: consists of servers and queues of objects to be served. Simulation: a program that determines how long items must wait in line before being served.
19
Case Study: Simulation (cont.) Inputs to the simulation: (1) the length of the simulation (2) the average transaction time (3) the number of servers (4) the average time between job arrivals
20
Case Study: Simulation (cont.) Parameters the simulation must vary: (1) number of servers (2) time between arrivals of items Output of simulation: average wait time.
21
Queue Implementation template class QueueType { public: QueueType(int); \\int for maxSize QueueType(); ~QueueType(); void MakeEmpty(); bool IsEmpty() const; bool IsFull() const; void Enqueue(const ItemType &); ItemType Dequeue(); private: int front; int rear; ItemType* items; //dynamic array int maxQue; };
22
Queue Implementation (cont.) template QueueType ::QueueType(int max) { maxQue = max + 1; front = maxQue - 1; rear = maxQue - 1; items = new ItemType[maxQue]; }
23
Queue Implementation (cont.) template QueueType ::~QueueType() { delete [] items; }
24
Queue Implementation (cont.) template void QueueType :: MakeEmpty() { front = maxQue - 1; rear = maxQue - 1; }
25
Queue Implementation (cont.) template bool QueueType ::IsEmpty() const { return (rear == front); } template bool QueueType ::IsFull() const { return ( (rear + 1) % maxQue == front); }
26
Queue Implementation (cont.) template void QueueType ::Enqueue (const ItemType & newItem) { rear = (rear + 1) % maxQue; items[rear] = newItem; }
27
Queue Implementation (cont.) template ItemType QueueType ::Dequeue() { front = (front + 1) % maxQue; return items[front]; }
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.