template <typename T> class Stack { public: void push(T item); T pop(); T peek() const; bool isEmpty() const; private: std::vector<T> items; }; int main() { Stack<int> s; s.push(42); std::cout << s.pop() << std::endl; }

資料結構 × C++ 互動自學網站

三章課前準備 + 九章互動教材 + 九頁選讀先備知識:每一節都能動手玩、預測、驗證,配上每節 quiz、關鍵詞彙卡與速查表。搭配課程講義與 cppds 教科書,把資料結構從「看得懂」練到「寫得出來」。
vector|pointer|stack|queue|list|recursion|hash|sort|tree|graph
📌 建議學習迴圈(每一章都照這個節奏)

這個網站是課程講義的互動版配套:講義給完整程式與推導,這裡給你「動手驗證直覺」的空間。正課頁的 §徽章對應 cppds 教科書節號,方便左右對照。初學 C++ 可以先從先備頁 P1–P9開始:先學語法,再讀課本。

① READ & PLAY逐節閱讀,動手操作互動元件:先預測結果,再按按鈕驗證。
② CROSS-CHECK對照講義 PDF 與 cppds 原文,把完整程式碼看懂、抄一遍、跑一遍。
③ QUIZ每節 quiz 立刻自測:答錯就回頭重讀該節,不要往下跳。
④ FLASHCARDS & REF翻完詞彙卡、掃過 REF 速查表,能不看答案講出定義才算過關。

課前準備(先讀這三頁)

章節(依授課順序)

01 · INTRODUCTION

C++ 導論:型別、指標與物件

cppds Ch.1

原子型別、指標與位址、五種集合型別、I/O 與控制結構、例外處理,最後用 Fraction 與邏輯閘電路把類別、多載與繼承一次走完。

12 節互動 · 每節 quiz · 45 張詞彙卡
02 · ANALYSIS

演算法分析

cppds Ch.2

Big-O 記號與成長級數、anagram 四種解法逐一計時對照、vector 與 string 操作成本,以及最壞/最好情境的差別。

8 節互動 · 每節 quiz · 12 張詞彙卡
03 · ARRAYS

陣列與稀疏矩陣

附錄 A(講義 03)

原生陣列與位址計算、二維陣列的 row-major 佈局、自己動手寫 ArrayList(含 grow 加倍策略)、稀疏矩陣的 DOK 表示。

7 節互動 · 每節 quiz · 11 張詞彙卡
04 · LINKED LISTS

鏈結串列

cppds Ch.4

Node 與指標串接、無序/有序串列的完整類別實作、逐操作複雜度分析、哨兵節點技巧,以及與 STL list 的對照。

8 節互動 · 每節 quiz · 8 張詞彙卡
05 · LINEAR STRUCTURES

堆疊、佇列與 Deque

cppds Ch.3

Stack 的括號配對與進位制轉換、中序轉後序與後序求值、Queue 的燙手山芋與印表機模擬、Deque 的回文判斷。

11 節互動 · 每節 quiz · 14 張詞彙卡
06 · RECURSION

遞迴

cppds Ch.5

三大法則、呼叫堆疊視覺化、進位制轉換與河內塔、螺旋與碎形樹、Sierpinski 三角形,收在動態規劃找零錢的四階段推演。

11 節互動 · 每節 quiz · 7 張詞彙卡
07 · SEARCH & SORT

搜尋與排序

cppds Ch.6–7

循序與二分搜尋、雜湊表與碰撞處理,六種排序法逐步動畫:bubble、selection、insertion、shell、merge、quick。

13 節互動 · 題庫自測 6 題 · 32 張詞彙卡
08 · GRAPHS

圖與圖演算法

cppds Ch.9

相鄰矩陣與相鄰串列、字梯問題與 BFS、騎士巡遊與 DFS、Dijkstra 最短路徑、Prim 最小生成樹,加上拓撲排序與強連通元件。

12 節互動 · 題庫自測 5 題 · 29 張詞彙卡
09 · TREES

樹與樹演算法

cppds Ch.8

樹的術語與表示法、解析樹、三種走訪、Binary Heap 與優先佇列、BST 的插入/搜尋/刪除三情境,到 AVL 旋轉與 Map ADT 總比較。

11 節互動 · 題庫自測 5 題 · 34 張詞彙卡

C++ 先備知識

先學 C++ 語法,再讀資料結構

這裡適合學過程式、剛開始接觸 C++ 的你,不需要先看課本,也不要求 Python 背景。 建議按 P1–P9 的順序閱讀;已熟悉的部分可以跳過。P3 的函式與參考、P4 的指標、P8 的類別是重要基礎,讀不順時先回到前一頁補齊。 各頁都有語法說明、小範例、互動練習與自我檢測。

本區選讀,不列入作業與考試範圍。尚未能執行 C++ 程式,先看環境安裝

P1

C++ 基礎與編譯流程

從這裡開始

從完整程式走過編譯四階段,拆解型別、初始化、輸入輸出、運算與轉型,再練習讀懂錯誤訊息。

P2

流程控制

條件與重複

逐步追蹤短路求值、條件分支與各種迴圈,辨認大括號、掉落、更新位置等陷阱,並計算巢狀迴圈的執行次數。

P3

函式與參考

重要基礎

先學函式的每個部分,再追蹤引數、回傳、作用域、傳值與參考,深入理解多載、預設引數和遞迴呼叫堆疊。

P4

陣列、指標與動態記憶體

重要基礎

分清指標本身與目標物件,理解陣列、指標算術、參數傳遞、堆疊與堆積,以及配置、釋放和所有權。

P5

vector 與 string

清單與文字

完整學習容器增刪、容量與攤還、三種走訪、迭代器失效、二維資料、標準序列容器,以及文字處理與串接成本。

P6

map、set 與迭代器

查詢與去重

從鍵值查詢走到迭代器、有序與無序容器、結構化綁定與安全刪除,再完成計數、保序去重和分組應用。

P7

檔案與例外

讀寫與錯誤處理

處理檔案路徑、讀寫模式與逐行解析,追蹤串流狀態、資源生命週期及例外跨函式傳遞,建立可靠的錯誤處理。

P8

類別與物件

重要基礎

逐步建立類別,理解建構、封裝、const、this、複製與解構,再學運算子輸出、組合和真正的多檔程式。

P9

類別延伸與模板入門

接著讀 P8

深入繼承與多型、抽象介面、模板、運算子、比較與雜湊規則、自訂容器介面,以及資源複製與自訂例外。

配套資源

📖 教科書 cppdsProblem Solving with Algorithms and Data Structures using C++(Brad Miller、David Ranum、Jan Pearce)。頁上 §節號皆對應此書。
GitHub 原始碼
📑 課程講義每章卡片內的「講義 PDF」連到課程 repo 的投影片,是本站內容的完整版來源。
nsysu-math208
🔬 線上追蹤工具想逐行看記憶體與指標變化,把程式碼貼進 C++ Tutor 一步步執行。
C++ Tutor
📘 Hello 演算法開源的動畫圖解教材(繁體中文版),每個資料結構都附可直接執行的 C++ 實作,另有十餘種語言版本;本站每章導讀列的「Hello 演算法」連到對應章節,讀本站卡住時換一套講法看。CC BY-NC-SA 4.0。
hello-algo.com(繁中)