Evanalysis
CSCI2520

CSCI2520:資料結構

針對 CSCI2520 資料結構基礎的結構化筆記,重視操作層級推理與選擇性互動示範。

你可以用側欄逐章前進,或直接從下方進入某一節筆記。

6 章節
每一節都可以直接在頁面閱讀,亦可以在需要離線溫習時匯出成靜態版本。

課程目錄

CSCI2520:資料結構

針對 CSCI2520 資料結構基礎的結構化筆記,重視操作層級推理與選擇性互動示範。

章節 0程式基礎1
章節 2List 與 recursion1
章節 4Trees 與 BST1

章節 0

程式基礎

資料結構筆記會反覆用到的語言與記憶體工具。

0.1嵌入式互動

0.1 Pointer、記憶體與 struct

重溫課程用來解釋資料結構行為的 C 語言工具:pointer、malloc、typedef 與 struct 佈局。

章節 1

ADT 與操作語義

由 ADT 規格走向 stack/queue 行為,再進入 dictionary 形式的 hashing 操作。

1.1嵌入式互動

1.1 ADT 操作:stack、queue 與 function pointer

以 ADT 角度精確理解 stack、queue 以及 C 語言中以 function pointer 進行操作分派的設計。

1.2嵌入式互動

1.2 Hash table 與 collision 策略

用 dictionary 操作、hash function、collision 與 chaining 去理解 hash table 為何以有序結構換取平均情況下的快速存取。

章節 2

List 與 recursion

遞歸 list 契約、head-tail 推理,以及受 representation 影響的操作成本。

2.1

2.1 作為遞歸 ADT 的 list

把 list 讀成遞歸的 head-tail ADT,再比較 iterative 與 recursive 操作實作。

章節 3

複雜度與排序

漸進增長、成本比較與面向排序的複雜度推理。

3.1嵌入式互動

3.1 複雜度增長與演算法成本

在實作排序或選擇演算法前,先解讀漸進增長並比較成本。

3.2

3.2 Selection、quickselect 與 linear-time sorting

分清 selection 與完整 sorting,再用 quickselect、counting sort、radix sort 理解額外結構何時改善複雜度。

章節 4

Trees 與 BST

Binary tree traversal、reconstruction 與 binary-search-tree operations。

4.1

4.1 Binary tree 與 BST 操作

用 traversal order、reconstruction 與 BST invariant 推理 binary tree algorithms。

章節 5

Graph 與 priority queue

Graph traversal、spanning tree、shortest path、topological sorting、heap 與 Huffman coding。

5.1

5.1 Graph traversal、spanning tree 與 shortest path

比較 graph representations、DFS、BFS、spanning-tree algorithms 與 shortest-path reasoning。

5.2

5.2 Topological sort、heap 與 Huffman coding

把 DAG ordering、heap priority queue、Huffman coding 與 sorted-list merging 當作有結構限制的 greedy algorithms 來學。