Presentation is loading. Please wait.

Presentation is loading. Please wait.

Queues CS 3358 – Data Structures. What is a queue? It is an ordered group of homogeneous items of elements. Queues have two ends: – Elements are added.

Similar presentations


Presentation on theme: "Queues CS 3358 – Data Structures. What is a queue? It is an ordered group of homogeneous items of elements. Queues have two ends: – Elements are added."— Presentation transcript:

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.

7

8

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]; }


Download ppt "Queues CS 3358 – Data Structures. What is a queue? It is an ordered group of homogeneous items of elements. Queues have two ends: – Elements are added."

Similar presentations


Ads by Google