{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Stacks Overview\n", "\n", "**Please see the lecture video for the full Overview on Stacks!**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "____\n", "\n", "A stack is an ordered collection of items where the addition of new items and the removal of existing items always takes place at the same end. This end is commonly referred to as the “top.” The end opposite the top is known as the “base.” \n", "\n", "The base of the stack is significant since items stored in the stack that are closer to the base represent those that have been in the stack the longest. The most recently added item is the one that is in position to be removed first. \n", "\n", "**This ordering principle is sometimes called LIFO, last-in first-out.** It provides an ordering based on length of time in the collection. Newer items are near the top, while older items are near the base.\n", "\n", "For example, consider the figure below:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "url ='https://upload.wikimedia.org/wikipedia/commons/b/b4/Lifo_stack.png'\n", "\n", "Image(url)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note how the first items \"pushed\" to the stack begin at the base, and as items are \"popped\" out. Stacks are fundamentally important, as they can be used to reverse the order of items. The order of insertion is the reverse of the order of removal.\n", "\n", "Considering this reversal property, you can perhaps think of examples of stacks that occur as you use your computer. For example, every web browser has a Back button. As you navigate from web page to web page, those pages are placed on a stack (actually it is the URLs that are going on the stack). The current page that you are viewing is on the top and the first page you looked at is at the base. If you click on the Back button, you begin to move in reverse order through the pages.\n", "\n", "In the next lecture we will implement our own Stack class!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Extra Resources:\n", "[Wikipedia Page on Stacks](http://bit.ly/1OJybGQ)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 1 }