{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ch14-title",
   "metadata": {},
   "source": [
    "# Abstract Data Structures"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ch14-overview",
   "metadata": {},
   "source": [
    "Abstract data structures describe how collections behave before we decide exactly how to implement them.\n",
    "\n",
    "- Abstract data types define supported operations and expected behavior\n",
    "- Concrete data structures store values in specific ways\n",
    "- Operation costs guide structure choice\n",
    "- Stacks and queues model order-sensitive workflows\n",
    "- Trees and graphs model hierarchical and relational data\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "video",
   "metadata": {},
   "source": [
    "<h2>Video</h2>\n",
    "\n",
    "The following overview introduces the main data-structure families used in this chapter: arrays/lists, linked lists, stacks, queues, trees, graphs, and hash tables.\n",
    "\n",
    "```{raw} html\n",
    "<iframe width=\"100%\" height=\"400\" src=\"https://www.youtube.com/embed/SuCGoHVoIag\" title=\"Data Structures Explained\" frameborder=\"0\" allowfullscreen></iframe>\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ch14-goals",
   "metadata": {},
   "source": [
    "<h2>Learning Goals</h2>\n",
    "\n",
    "By the end of this chapter, you will be able to:\n",
    "\n",
    "1. Explain the difference between an abstract data type and a concrete implementation\n",
    "2. Compare common operations such as insertion, deletion, lookup, and traversal\n",
    "3. Use stacks and queues to model order-sensitive workflows\n",
    "4. Represent hierarchical data with trees and relationship data with graphs\n",
    "5. Choose a data structure based on clarity, constraints, and performance tradeoffs\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ch14-flow",
   "metadata": {},
   "source": [
    "<h2>Chapter Flow</h2>\n",
    "\n",
    "```{tableofcontents}\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "glossary",
   "metadata": {},
   "source": [
    "<h2>Glossary</h2>\n",
    "\n",
    "| Term | Meaning |\n",
    "| --- | --- |\n",
    "| Abstract data type | A behavior-focused description of a collection and its operations |\n",
    "| Data structure | A concrete way to organize and store data |\n",
    "| Stack | A last-in, first-out collection |\n",
    "| Queue | A first-in, first-out collection |\n",
    "| Node | A small object that stores a value and references to related nodes |\n",
    "| Tree | A hierarchical structure with a root and child nodes |\n",
    "| Graph | A structure made of nodes and edges representing relationships |\n",
    "| Traversal | A systematic process for visiting items in a structure |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1400-slides",
   "metadata": {},
   "source": [
    "<h2><a href=\"overview.html\" target=\"_blank\" style=\"color: var(--pst-color-link, #176de8);\">Chapter Overview Slides</a></h2>"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
