Presentation is loading. Please wait.

Presentation is loading. Please wait.

LECTURE 26: QUEUES CSC 212 – Data Structures. Using Stack.

Similar presentations


Presentation on theme: "LECTURE 26: QUEUES CSC 212 – Data Structures. Using Stack."— Presentation transcript:

1 LECTURE 26: QUEUES CSC 212 – Data Structures

2 Using Stack

3  Great for Pez dispensers, calculators,& methods  All of these use only the last item added  Do not complain when later additions served first  Many situations use 1 item, but in different order  Take reservations in order they are received  Cards (usually) dealt from top of the deck Stack Limitations

4  Collection ’s operations are part of Queue  As in Stack, declares size() & isEmpty()‏  Add & remove elements using 2 methods  Element gets added to end with enqueue(elem)  dequeue() removes element at front of structure  Also includes method to peek in at first element  front() returns element at front without removing Queue ADT

5 public interface Queue extends Collection { public E front() throws EmptyQueueException; public E dequeue() throws EmptyQueueException; public void dequeue(E element); }  Very similar to Stack interface  Defines specific methods to add, remove, & view data  Holds many elements, but can access only one  Stack & Queue always add to the end  Remove element at the start of a QUEUE…  …while STACK removes element at the end Queue Interface

6 Stacks vs. Queues  Access data with Stack in LIFO order  LIFO  L ast I n- F irst O ut  Completely unfair (unless you are always late) ‏  Data accessed in Queue using FIFO order  FIFO  F irst I n- F irst O ut  Better resembles lines at bank, Sabres game, airports

7  Among the most fundamental data types  Selecting application to run in modern OS  Handling and processing network traffic  Message checking in IM chat servers  Accepting ticket orders for Sabres game  Other data structures also rely upon a Queue  Key feature in many algorithms Queue Applications

8  “Obvious” implementation uses an array  Must consume a constant amount of space  enqueue() throws exception when it lacks space  Instead write linked list-based implementation  Singly-, doubly-, or circular-linked list could work  Size of the Queue grows & shrinks as needed  More straightforward, but is it slower? Queue Implementation

9  Class defines fields aliased to first & last nodes  head & rear often used as fields’ names (creative!) ‏  enqueue element by adding new Node after rear  Set head to next Node in list to dequeue element Linked-list based Queue Ø head rear

10  STACKS are easy for arrays: only 1 end “moves”  Can always find Stack’s bottom at index 0  QUEUES are harder, because both ends move  dequeue removes element from the front  Add element to back with calls to enqueue  Ends of a array-based QUEUE like clock time Circular Access q r f r rrr r r r

11 f r Array-based Queue  Two fields track front and rear of QUEUE f equals index of front element r holds index immediately after rear element  Add & remove elements at opposite ends of array  Uses circular access to the array  Like a clock –when end (12) reached we loop to start  Array must be empty at index in r q r r f r r r

12 Array-based Queue Operations  Based on clock math  Uses mod (remainder) ‏  Java expressed as %  How mod works: 4 % 3 = 1 3 % 4 = 3 6 % 6 = 0 12 % 6 = 0 Algorithm size() N  q.length return (N  f + r) mod N

13 Array-based Queue Operations Algorithm enqueue(e)‏ if size() = q.length  1 then throw FullQueueException else q[r]  e r  (r + 1) mod q.length q rf Algorithm dequeue()‏ if isEmpty() then throw EmptyQueueException else retVal  q[f] f  (f + 1) mod q.length return retVal

14  Finish week #9 assignment  Due by 5PM tomorrow  Continue programming assignment #3  Messages are not always sent to everyone!  Read section 5.3 in book before class  Discusses merger of Stack & Queue ADT  Implement this Deque ADT with array  Could instead implement it with a linked-list  Make also sorts of bad jokes about porches Before Next Lecture…


Download ppt "LECTURE 26: QUEUES CSC 212 – Data Structures. Using Stack."

Similar presentations


Ads by Google