{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1834599d",
   "metadata": {},
   "source": [
    "# Chapter Review\n",
    "\n",
    "01. What does **LIFO** stand for, and which data structure follows this principle?\n",
    "    What does **FIFO** stand for, and which data structure follows this principle?\n",
    "\n",
    "02. What is the difference between a **generic** collection (e.g., `Stack<T>`) and a\n",
    "    **non-generic** collection (e.g., `Stack`) in C#? Why are generic collections\n",
    "    generally preferred?\n",
    "\n",
    "03. Describe the two primary operations of a **Stack**. What happens if you call `Pop()`\n",
    "    on an empty stack?\n",
    "\n",
    "04. Describe the two primary operations of a **Queue**. Give a real-world scenario\n",
    "    where a queue would be the appropriate data structure to use.\n",
    "\n",
    "05. A `LinkedList<T>` stores nodes that each point to the next node. How does this\n",
    "    differ from an array in terms of:\n",
    "    - Memory layout\n",
    "    - Accessing an element by index\n",
    "    - Inserting an element in the middle\n",
    "\n",
    "06. What is a **hash table**, and why does it provide near constant-time `O(1)` lookup\n",
    "    on average? What C# collection type is built on a hash table?\n",
    "\n",
    "07. You need to store a set of tasks to process in the order they arrive. Which\n",
    "    collection type would you choose — `Stack<T>`, `Queue<T>`, or `List<T>`? Explain.\n",
    "\n",
    "08. You need to temporarily save and restore a series of states (like an undo feature).\n",
    "    Which collection type is most appropriate? Explain.\n",
    "\n",
    "09. What is the relationship between the data structures covered in this chapter\n",
    "    (arrays, stacks, queues, linked lists, hash tables, trees) and the C# collection\n",
    "    classes in `System.Collections.Generic`? Give two concrete examples.\n",
    "\n",
    "10. A **tree** data structure has a root node, and each node may have child nodes.\n",
    "    What distinguishes a tree from a general **graph**?"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
