{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "title",
   "metadata": {},
   "source": [
    "# Abstract Data Structures\n",
    "\n",
    "Abstract data structures describe how collections behave before we decide exactly how to implement them. In this chapter, you will connect Python containers to core computer science ideas: interfaces, operation costs, stacks, queues, trees, and graphs.\n",
    "\n",
    "- An abstract data type defines supported operations and expected behavior.\n",
    "- A concrete data structure stores values in a specific way.\n",
    "- The best structure depends on the operations a program performs most often.\n",
    "- Stacks, queues, trees, and graphs appear often in software systems and technical interviews."
   ]
  },
  {
   "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": "goals",
   "metadata": {},
   "source": [
    "**Learning Goals**\n",
    "\n",
    "- Explain the difference between an abstract data type and a concrete implementation\n",
    "- Compare common operations such as insertion, deletion, lookup, and traversal\n",
    "- Use stacks and queues to model order-sensitive workflows\n",
    "- Represent hierarchical data with trees and relationship data with graphs\n",
    "- Choose a data structure based on clarity, constraints, and performance tradeoffs"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "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 |"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
