Download presentation
Presentation is loading. Please wait.
Published byMildred Parks Modified over 9 years ago
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…
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.