資料結構課程主頁-2016級
新學期,再度起程!
翻轉的資料結構課程再度迎來新的一批同學。
前兩年,資源建設基本完備,課堂方案逐漸完善,同學們對新型的學習方式設計給予了肯定(參見2014級問卷調查和2015級學生總結)。
針對2016級的教學,重點之一是完善課堂方案,讓課堂成為第二週一次的催化劑,以課堂活動為核心,讓學習更有效。這重中之重,便是小組合作,學習小組不僅在課堂起作用,而且要延伸到整個學習過程。
重點之二,是減輕學習負擔。仗著資料結構課是電腦科學與技術專業最重要的專業基礎課,前兩屆的學生跟著我,能夠每週投入10小時以上的時間學習,同學們也基本能按要求去做,總體上也不超5×8小時的“工作時間”。但在這一方面,想做點努力,讓同學們少花些時間,提高核心能力。
少說多幹。本文將提供2016級全體同學的部落格連結,以及有關實踐環節的學習資料連結。
學生部落格連結
1.孫仁圓 朱坤昂 張俊傑 楊合進 王百琛 張 行
2.王雪行 於 琛 李浩南 常 路 黎兆陽 劉澤齊
3.張 帥 李 恩 姬長水 周月慶 申正陽 安 凱
4.劉思源 賈存鈺 劉 濤 張延飛 宋 昊 李家年
5.李首言 李金樸 劉照京 任澤西 範寶磊 王效傑
6.杜昕曄 李琳汐 尹 娜 潘亞楠 李 瀟 徐瀟雨
7.黃瀟慧 白苗苗 薛瑞琪 於子淇 孫銘馨 張翠平
8.李慶耀 邵雪源 陳軍正 葛慧文 張思琦 何文潔
9.馬明祥 於 嵩 李小同 王長青
10.侯成健 趙楷文 張慶彪 田長航 張 昕 張文暢
11.高 晶 臧雲鵬 李 哲 劉 浩 胡俊超 李英榮
12.嶽增強 王萬興 黃士勝 王 碩 胡德傑 盛 凱
13.李欣豪 張雨萌 武美妤 董麗娟 尚文哲 劉文平
14.王銘澤 於 涵 馮 圓 吳玉然 高兆港 董玉祥
課程資源
第1周 學習改革準備活動
第2周 資料結構概述
1. 關於資料結構課程 16:49
2. 什麼是資料結構 13:15
3. 資料的邏輯結構及型別 19:29
4. 抽象資料型別 14:13
5. 演算法及其描述 17:08
6. 演算法複雜度概念 22:15
7. 演算法分析例項 12:16
8. 演算法與資料結構 14:56
第3周 線性表(1)——順序表
- 導學 0:00
- 線性表的邏輯結構與基本運算 21:25
- 線性表的順序儲存結構 8:50
- 建立線性表的實現(暨引數型別的討論) 18:40 [ 例程]
- 順序表基本運算的實現 18:48 [演算法庫] [補充案例:找Bug]
- 線性表順序儲存的應用 17:31 [例程]
- 實踐指導:用程式實踐演算法 15:30 [例程] [文字版]
第4周 線性表(2)——連結串列
8.線性表的鏈式儲存 12:19
9. 建立單鏈表 16:30 [例程]
10. 單鏈表基本操作的實現 18:59 [演算法庫]
11. 單鏈表應用舉例 24:12 [例程]
12. 雙鏈表 19:36 [演算法庫]
13. 迴圈連結串列 6:23 [演算法庫: 迴圈單鏈表] [演算法庫: 迴圈雙鏈表]
14. 線性表的應用 27:10 [例程]
15. 有序表 15:13 [例程]
第5周 棧和佇列(1)——棧
1. “棧和佇列”導學 9:23
2. 棧的定義 9:56
3. 棧的順序儲存結構及其基本運算實現 14:15 [演算法庫]
4. 棧的鏈式儲存結構及其基本運算的實現 6:39 [演算法庫]
5. 棧的應用1-表示式求值 31:23 [例程]
6. 棧的應用2-迷宮問題 19:48 [例程]
第7周 棧和佇列(2)——佇列
7. 佇列的定義 5:46
8. 順序隊的儲存及基本操作 12:24
9. 環形佇列的儲存及基本操作 21:00 [演算法庫]
10. 佇列的鏈式儲存結構及其基本運算的實現 17:07 [演算法庫]
11. 佇列的應用-迷宮問題 21:39 [例程]
12. 雙端佇列 5:04
(為保證學習的完整性,保留所有的學習內容。因學時原因壓縮內容,所以,按學習方案指導,優先完成必學內容。)
第8周(1) 串
1. 串的基本概念及導學 11:09 [自測]
2. 串的順序儲存及其基本操作實現 26:09 [演算法庫]
3. 串的順序儲存應用 12:53 [例程]
4. (選學)串的鏈式儲存及其基本操作實現 21:58 [演算法庫] [自測]
5. 串的模式匹配(Brute-Force演算法) 16:15 [例程]
6. (選學)串的模式匹配(KMP演算法) 33:20 [例程] [自測]
第8周(2) 陣列與廣義表
1. 陣列的基本概念與儲存結構 22:06 [自測]
2. 特殊矩陣的壓縮儲存 31:56 [例程] [自測]
3. 稀疏矩陣的三元組表示 26:41 [演算法庫] [自測]
4. (選學)稀疏矩陣的十字連結串列表示 28:33 [例程]
5. (選學)廣義表 13:58 [自測]
6. (選學)廣義表的儲存結構及基本運算的實現 30:40 [演算法庫]
第9周 樹和二叉樹(1)
1 樹結構導學 6:19
2 樹的基本概念 18:04
3 樹的基本術語 7:41
4 樹的性質 14:59
5 樹的儲存結構 13:33 [例程]
6 二叉樹概念和性質 18:02
7 二叉樹與樹、森林之間的轉換 12:13
8 二叉樹的儲存結構 9:21
9 二叉樹的基本運算及其實現 29:18 [演算法庫]
10 二叉樹的遍歷 18:42 [例程(演算法)] [例程(應用)]
第10周 樹和二叉樹(2)
11 二叉樹遍歷非遞迴演算法 23:04 [例程]
12 層次遍歷演算法 10:05 [例程] [例程(應用)]
13 二叉樹的構造 24:23 [例程]
14 線索二叉樹 21:41 [例程]
15 哈夫曼樹 29:24 [例程]
第11周 圖(1)
1. 圖結構導學 12:16
2. 圖的定義 7:34
3. 圖的基本術語 21:22
4. 圖的鄰接矩陣儲存結構及演算法 16:55 [例程]
5. 圖的鄰接表儲存結構及演算法 22:52 [演算法庫]
6. 圖的遍歷 24:05 [例程]
7. 非連通圖的遍歷 7:55 [例程]
8. DFS(深度優先搜尋)的應用 21:27 [例程]
9. BFS(廣度優先搜尋)的應用 12:12 [例程]
第12周 圖(2)
10.生成樹的概念 13:10
11.最小生成樹的普里姆算 26:36 [例程]
12.最小生成樹的克魯斯卡爾演算法 18:16[例程]
13.從一個頂點到其餘各頂點的最短路徑 34:15 [例程]
14.每對頂點之間的最短路徑 22:15[例程]
15.拓撲排序 15:39[例程]
16.AOE網與關鍵路徑 19:15
第13周 查詢(1)
1.查詢問題導學 13:31
2.線性表的順序查詢 7:52 [例程]
3.線性表的折半查詢 20:05 [例程]
4.索引儲存結構 5:26
5.分塊查詢 20:32 [例程]
6.二叉排序樹 22:58
7.二叉排序樹(續) 12:03 [例程]
8.平衡二叉樹 32:56 [例程]
第14周 查詢(2)和內部排序(1)
9. B-樹 29:01
10. B+樹 5:491
11. 雜湊表——雜湊結構 29:38
12. 雜湊表的運算 27:40 [例程]
課後上機實踐及參考: 第14周 內部排序(1) (併入15周部分)
第15周 內部排序(二)
4. 交換排序之氣泡排序 16:22 [例程]
5. 交換排序之快速排序 20:13 [例程]
6. 選擇排序之直接選擇排序 10:06 [例程]
7. 選擇排序之堆排序 22:18 [例程] [補充示例]
8. 歸併排序 18:08 [例程]
9. 簡單的計數排序 8:33 [例程]
10. 基數排序 20:06 [例程]
11. 各種排序的比較 8:39
課後上機實踐及參考: 第15周 內部排序 (含14周內部排序部分)
【自選擴充套件部分】
擴充套件一:外部排序
1.外排序概述7:27
2. 磁碟排序12:36
3. 多路平衡歸併25:53[例程]
4. 初始歸併段的置換-選擇排序演算法13:07[例程]
5. 最佳歸併樹 12:19
6. 磁帶多路平衡歸併排序 14:05
7. 磁帶多階段歸併排序 14:27
擴充套件二:檔案
1 檔案的基本概念16:27
2 順序檔案11:18
3 索引檔案13:37 [例程]
4 ISAM索引檔案18:16
5 VSAM索引檔案10:25
6 雜湊檔案11:16
7 多關鍵字檔案11:30
8 課程結語 7:04
上機實踐及參考: 檔案模擬