.. 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 `_ Interactive: Introduction to Stacks [11:32] ------------------------------------------- .. admonition:: The Stack Interface .. raw:: html StackInterface.java .. 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 .. raw:: html

Video Slides StacksIntro Checkpoint 1 ------------ .. avembed:: Exercises/SWDesignAndDataStructs/StacksCheckpoint1Summ.html ka :long_name: Checkpoint 1 Interactive: Stack Memory Example [6:25] ---------------------------------------- .. raw:: html
Checkpoint 2 ------------ .. avembed:: Exercises/SWDesignAndDataStructs/StacksCheckpoint2Summ.html ka :long_name: Checkpoint 2 Stacks Array-Based Design [4:57] -------------------------------- .. raw:: html
Checkpoint 3 ------------ .. avembed:: Exercises/SWDesignAndDataStructs/StacksCheckpoint3Summ.html ka :long_name: Checkpoint 3 Stacks Array Implementation [5:57] ---------------------------------- .. raw:: html

Video Slides StacksArrayImplementation.pdf Stacks Linked Chain Implementation [5:57] ----------------------------------------- .. raw:: html
.. raw:: html Video Slides StacksLinkedChainImplementation.pdf
Video Slides TestingStacks.pdf Checkpoint 4 ------------ .. avembed:: Exercises/SWDesignAndDataStructs/StacksCheckpoint4Summ.html ka :long_name: Checkpoint 4 Programming Practice: LinkedStacks ---------------------------------- .. extrtoolembed:: 'Programming Practice: LinkedStacks' :workout_id: 1912