.. This file is part of the OpenDSA eTextbook project. See .. http://opendsa.org for more details. .. Copyright (c) 2012-2020 by the OpenDSA Project Contributors, and .. distributed under an MIT open source license. .. avmetadata:: :author: Molly Domino Stacks ====== Objectives ---------- Upon completion of this module, students will be able to: * Describe the Stack Abstract Data Type/Data Structure and the characteristics of a Stack * Implement Stacks in Java using an Array-Based or Linked-Chain approach * Develop and use Stack methods * Test the functionality of Stack * Evaluate a range of applications / use cases to determine if use of the Stack Data Structure is appropriate Suggested Reading ~~~~~~~~~~~~~~~~~ Chapters 5 - 6 Bags from `Data Structures and Abstractions with Java, 4th edition by Frank M. Carrano and Timothy Henry `_ .. _StacksIntro: Introduction to Stacks [11:32] ------------------------------ .. admonition:: The Stack Interface .. raw:: html StackInterface.java (right-click to download as .java file) .. code-block:: java package stack; /** * An interface for the ADT stack. * * @author Frank M. Carrano * @author Timothy M. Henry * @author maellis1 * @version May 2020 */ public interface StackInterface { /** * Adds a new entry to the top of this stack. * * @param newEntry * An object to be added to the stack. */ public void push(T newEntry); /** * Removes and returns this stack's top entry. * * @return The object at the top of the stack. * @throws stack.EmptyStackException * if the stack is empty before the operation. */ public T pop(); /** * Retrieves this stack's top entry. * * @return The object at the top of the stack. * @throws stack.EmptyStackException * if the stack is empty. */ public T peek(); /** * Detects whether this stack is empty. * * @return True if the stack is empty. */ public boolean isEmpty(); /** Removes all entries from this stack. */ public void clear(); } // end StackInterface .. admonition:: Follow Along and Engage Download the slides corresponding to the video. Take notes on them as you watch the video, practice drawing diagrams yourself! .. raw:: html Video Slides 8.5.2-StacksIntro .. raw:: html
Checkpoint 1 ------------ .. avembed:: Exercises/MengBridgeCourse/StacksCheckpoint1Summ.html ka :long_name: Checkpoint 1 .. _StacksMemory: StackIntroVideoMemory Example [6:25] ------------------------------------ .. raw:: html
Checkpoint 2 ------------ .. avembed:: Exercises/MengBridgeCourse/StacksCheckpoint2Summ.html ka :long_name: Checkpoint 2 .. _StacksArrayBased: Stacks Array-Based Design [4:57] -------------------------------- .. raw:: html
Checkpoint 3 ------------ .. avembed:: Exercises/MengBridgeCourse/StacksCheckpoint3Summ.html ka :long_name: Checkpoint 3 .. _StacksArrayImpl: Stacks Array Implementation ---------------------------------- .. admonition:: Follow Along and Engage Download the slides corresponding to the video. Take notes on them as you watch the video, practice drawing diagrams yourself! .. raw:: html Video Slides 8.5.8.1-StacksArrayImplementation.pdf .. raw:: html
.. _StacksChainImpl: Stacks Linked Chain Implementation [12:50] ------------------------------------------ .. admonition:: Follow Along and Engage Download the slides corresponding to the video. Take notes on them as you watch the video, practice drawing diagrams yourself! .. raw:: html Video Slides 8.5.9.1-StacksLinkedChainImplementation.pdf
Video Slides 8.5.9.1-TestingStacks.pdf .. raw:: html
Checkpoint 4 ------------ .. avembed:: Exercises/MengBridgeCourse/StacksCheckpoint4Summ.html ka :long_name: Checkpoint 4 Programming Practice: LinkedStacks ---------------------------------- .. extrtoolembed:: 'Programming Practice: LinkedStacks' :workout_id: 1912