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

queues
SMART_READER_LITE
LIVE PREVIEW

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;


slide-1
SLIDE 1

Queues

slide-2
SLIDE 2

What is a queue?

  • First-in first-out data structure (FIFO)
  • New objects are placed at rear
  • Removal restricted to front
  • Examples?
slide-3
SLIDE 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

slide-4
SLIDE 4

Example

  • enqueue(5)
  • enqueue(3)
  • dequeue()
  • enqueue(7)
  • dequeue()
  • front()
  • dequeue()
  • dequeue()
  • isEmpty()
  • enqueue(9)
  • enqueue(7)
  • size()
  • enqueue(3)
  • enqueue(5)
  • dequeue()
slide-5
SLIDE 5

Queue Interface

int size(); bool isEmpty(); Object front() throws QueueEmptyException; void enqueue(Object obj); Object dequeue() throws QueueEmptyException;

slide-6
SLIDE 6

Underlying Representation

  • Array versus Linked List

– Pros and cons?

  • Running time?

– size – isEmpty – enqueue – dequeue – front

slide-7
SLIDE 7

Array Implementation

1 2 3 4 5 6 … n-1 5 3 1 2 3 4 5 6 … n-1 enqueue(5) enqueue(3) dequeue() ?

slide-8
SLIDE 8

Array Implementation

1 2 3 4 5 6 … n-1 5 3 1 2 3 4 5 6 … n-1 enqueue(5) enqueue(3) dequeue() ? 3 1 2 3 4 5 6 … n-1

slide-9
SLIDE 9

Circular Array

  • f – stores index of cell which stores first element
  • f 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?

1 2 3 4 5 6 … n-1 f r

slide-10
SLIDE 10

Circular Array

  • 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?

1 2 3 4 5 6 … n-1 f r

slide-11
SLIDE 11

Circular Array

  • Need to be able to wrap around
  • Modulo – %

– increment f using (f+1)%n – increment r using (r+1)%n

1 2 3 4 5 6 … n-1 f r

slide-12
SLIDE 12

Circular Array

1 2 f r 1 2 f r 1 2 f r 1 2 f r 1 2 f enqueue enqueue dequeue enqueue r =(2+1)%3= 0

slide-13
SLIDE 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

slide-14
SLIDE 14

Deque

  • Double-ended queue

– insertFirst – insertLast – removeFirst – removeLast – first – last – size – isEmpty

slide-15
SLIDE 15

Example

  • insertFirst(3)
  • insertFirst(5)
  • first()
  • removeFirst()
  • insertLast(7)
  • last()
  • removeFirst()
  • removeLast()
slide-16
SLIDE 16

Doubly Linked List

  • Algorithms

– insertFirst – removeLast

Object3 prev next trailer Object2 prev next Object1 prev next header

slide-17
SLIDE 17

Exercises

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