DOC PREVIEW
Penn CIT 594 - Stacks Queues and Deques

This preview shows page 1-2-14-15-29-30 out of 30 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Stacks, Queues, and DequesSlide 2Array implementation of stacksPushing and poppingAfter poppingSharing spaceError checkingPointers and referencesCreating referencesCreating links in JavaLinked-list implementation of stacksLinked-list implementation detailsArray implementation of queuesSlide 14Circular arraysFull and empty queuesFull and empty queues: solutionsLinked-list implementation of queuesSLL implementation of queuesEnqueueing a nodeDequeueing a nodeQueue implementation detailsDequesStack ADTA queue ADTjava.util Interface Queue<E>A deque ADTUsing ArrayListsjava.util Interface Deque<E>The EndStacks, Queues, and Deques2Stacks, Queues, and DequesA stack is a last in, first out (LIFO) data structureItems are removed from a stack in the reverse order from the way they were insertedA queue is a first in, first out (FIFO) data structureItems are removed from a queue in the same order as they were insertedA deque is a double-ended queue—items can be inserted and removed at either end3Array implementation of stacksTo implement a stack, items are inserted and removed at the same end (called the top)Efficient array implementation requires that the top of the stack be towards the center of the array, not fixed at one endTo use an array to implement a stack, you need both the array itself and an integerThe integer tells you either:Which location is currently the top of the stack, orHow many elements are in the stack4Pushing and poppingIf the bottom of the stack is at location 0, then an empty stack is represented by top = -1 or count = 0To add (push) an element, either:Increment top and store the element in stk[top], orStore the element in stk[count] and increment countTo remove (pop) an element, either:Get the element from stk[top] and decrement top, orDecrement count and get the element in stk[count]top = 3 or count = 40 1 2 3 4 5 6 7 8 917 23 97 44stk:5After poppingWhen you pop an element, do you just leave the “deleted” element sitting in the array?The surprising answer is, “it depends”If this is an array of primitives, or if you are programming in C or C++, then doing anything more is just a waste of timeIf you are programming in Java, and the array contains objects, you should set the “deleted” array element to nullWhy? To allow it to be garbage collected!top = 2 or count = 30 1 2 3 4 5 6 7 8 917 23 97 44stk:6Sharing spaceOf course, the bottom of the stack could be at the other endtop = 6or count = 4172397440 1 2 3 4 5 6 7 8 9stk:Sometimes this is done to allow two stacks to share the same storage areatopStk2 = 61723974449 57 30 1 2 3 4 5 6 7 8 9stks:topStk1 = 27Error checkingThere are two stack errors that can occur:Underflow: trying to pop (or peek at) an empty stackOverflow: trying to push onto an already full stackFor underflow, you should throw an exceptionIf you don’t catch it yourself, Java will throw an ArrayIndexOutOfBounds exceptionYou could create your own, more informative exceptionFor overflow, you could do the same thingsOr, you could check for the problem, and copy everything into a new, larger array8Pointers and referencesIn C and C++ we have “pointers,” while in Java we have “references”These are essentially the same thingThe difference is that C and C++ allow you to modify pointers in arbitrary ways, and to point to anythingIn Java, a reference is more of a “black box,” or ADTAvailable operations are:dereference (“follow”)copycompare for equalityThere are constraints on what kind of thing is referenced: for example, a reference to an array of int can only refer to an array of int9Creating referencesThe keyword new creates a new object, but also returns a reference to that objectFor example, Person p = new Person("John")new Person("John") creates the object and returns a reference to itWe can assign this reference to p, or use it in other ways10Creating links in Javaclass Cell { int value; Cell next;Cell (int v, Cell n) { value = v; next = n; }}Cell temp = new Cell(17, null);temp = new Cell(23, temp);temp = new Cell(97, temp);Cell myStack = new Cell(44, temp);44 97 23 17myStack:11Linked-list implementation of stacksSince all the action happens at the top of a stack, a singly-linked list (SLL) is a fine way to implement itThe header of the list points to the top of the stack44 97 23 17myStack:Pushing is inserting an element at the front of the listPopping is removing an element from the front of the list12Linked-list implementation detailsWith a linked-list representation, overflow will not happen (unless you exhaust memory, which is another kind of problem)Underflow can happen, and should be handled the same way as for an array implementationWhen a node is popped from a list, and the node references an object, the reference (the pointer in the node) does not need to be set to nullUnlike an array implementation, it really is removed--you can no longer get to it from the linked listHence, garbage collection can occur as appropriate13Array implementation of queuesA queue is a first in, first out (FIFO) data structureThis is accomplished by inserting at one end (the rear) and deleting from the other (the front)To insert: put new element in location 4, and set rear to 4To delete: take element from location 0, and set front to 1 17 23 97 440 1 2 3 4 5 6 7myQueue:rear = 3front = 014Array implementation of queuesNotice how the array contents “crawl” to the right as elements are inserted and deletedThis will be a problem after a while!17 23 97 44 333After insertion:23 97 44 333After deletion:rear = 4front = 117 23 97 44Initial queue:rear = 3front = 015Circular arraysWe can treat the array holding the queue elements as circular (joined at the ends)44 55 11 22 330 1 2 3 4 5 6 7myQueue:rear = 1front = 5Elements were added to this queue in the order 11, 22, 33, 44, 55, and will be removed in the same orderUse: front = (front + 1) % myQueue.length;and: rear = (rear + 1) % myQueue.length;16Full and empty queuesIf the queue were to become completely full, it would look like this:If we were then to remove


View Full Document

Penn CIT 594 - Stacks Queues and Deques

Documents in this Course
Trees

Trees

17 pages

Searching

Searching

24 pages

Pruning

Pruning

11 pages

Arrays

Arrays

17 pages

Stacks

Stacks

30 pages

Recursion

Recursion

25 pages

Hashing

Hashing

24 pages

Recursion

Recursion

24 pages

Graphs

Graphs

25 pages

Storage

Storage

37 pages

Trees

Trees

21 pages

Arrays

Arrays

24 pages

Hashing

Hashing

24 pages

Recursion

Recursion

25 pages

Graphs

Graphs

23 pages

Graphs

Graphs

25 pages

Stacks

Stacks

25 pages

Recursion

Recursion

25 pages

Quicksort

Quicksort

21 pages

Quicksort

Quicksort

21 pages

Graphs

Graphs

25 pages

Recursion

Recursion

25 pages

Searching

Searching

24 pages

Counting

Counting

20 pages

HTML

HTML

18 pages

Recursion

Recursion

24 pages

Pruning

Pruning

11 pages

Graphs

Graphs

25 pages

Load more
Download Stacks Queues and Deques
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Stacks Queues and Deques and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Stacks Queues and Deques 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?