queues
play

Queues What is a queue? First-in first-out data structure (FIFO) - PowerPoint PPT Presentation

Queues What is a queue? First-in first-out data structure (FIFO) New objects are placed at rear Removal restricted to front Examples? Queue ADT Operations enqueue (o): Insert o at rear of queue Input: Object;


  1. Queues

  2. What is a queue? First-in first-out data structure (FIFO) • New objects are placed at rear • Removal restricted to front • Examples? •

  3. Queue ADT Operations • enqueue (o): Insert o at rear of queue – Input: Object; Output: None • dequeue (): Remove object at front; error if empty – Input: None; Output: Object removed • size (): Return number of objects in queue – Input: None; Output: Integer • isEmpty (): Return a boolean indicating queue empty – Input: None; Output: Boolean • first (): Return object at front without removing; error if empty – Input: None; Output: Object

  4. Example • enqueue(5) • enqueue(9) • enqueue(3) • enqueue(7) • dequeue() • size() • enqueue(7) • enqueue(3) • dequeue() • enqueue(5) • front() • dequeue() • dequeue() • dequeue() • isEmpty()

  5. Queue Interface int size(); bool isEmpty(); Object front() throws QueueEmptyException; void enqueue(Object obj); Object dequeue() throws QueueEmptyException;

  6. Underlying Representation • Array versus Linked List – Pros and cons? • Running time? – size – isEmpty – enqueue – dequeue – front

  7. Array Implementation 0 1 2 3 4 5 6 … n-1 enqueue(5) 5 3 enqueue(3) 0 1 2 3 4 5 6 … n-1 dequeue() ?

  8. Array Implementation 0 1 2 3 4 5 6 … n-1 enqueue(5) 5 3 enqueue(3) 0 1 2 3 4 5 6 … n-1 3 dequeue() ? 0 1 2 3 4 5 6 … n-1

  9. Circular Array f r 0 1 2 3 4 5 6 … n-1 • f – stores index of cell which stores first element of queue • r – stores index of next available cell in queue • Initially, f = r = 0 • How do you add a new element? • How do you remove an element?

  10. Circular Array f r 0 1 2 3 4 5 6 … n-1 • How do you add a new element? – insert at array[r] – increment r • How do you remove an element? – return array[f] – increment f • What happens when r >= n-1?

  11. Circular Array r f 0 1 2 3 4 5 6 … n-1 • Need to be able to wrap around • Modulo – % – increment f using (f+1)%n – increment r using (r+1)%n

  12. Circular Array f r f dequeue 0 1 2 0 1 2 f r r f r =(2+1)%3= 0 enqueue enqueue 0 1 2 0 1 2 f r enqueue 0 1 2

  13. Algorithms size • return (N-f+r) mod N – isEmpty • return (f == r) – front • if isEmpty then throw QueueEmptyException – return array[f] – dequeue • if isEmpty then throw QueueEmptyException – temp = array[f] – f = (f+1)%N – return temp – enqueue • if size == N-1 then throw QueueFullException SIZE MUST BE < N-1 – array[r] = object – r = (r+1)%N –

  14. Deque • Double-ended queue – insertFirst – insertLast – removeFirst – removeLast – first – last – size – isEmpty

  15. Example • insertFirst(3) • insertFirst(5) • first() • removeFirst() • insertLast(7) • last() • removeFirst() • removeLast()

  16. Doubly Linked List Object1 Object2 Object3 prev prev prev header trailer next next next • Algorithms – insertFirst – removeLast

  17. Exercises • Implement a queue using two stacks. • Implement a stack using two queues.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend