《數據結構》
描述語言:
本考試課程的描述語言建議爲C或C++語言,如果沒有學過C或C++可以採用其它的通用程序設計語言。在編寫程序時,必須說明基本的程序設計思想,並附以必要的註解。必須按照程序書寫規範編寫程序,如保留字必須大寫,嵌套語句必須注意對齊等等。另外,編寫程序必須採用規範的程序設計語言,採用類-C或類-C++語言編寫的程序,一律不予承認。
複習大綱:
1、 計算機與算法的基本概念
算法、算法正確性、複雜性
算法的時間與空間複雜性級別
遞歸及循環程序設計的算法複雜性的求解及基礎方法
最壞情況下、平均情況下的時間複雜性的求法
2、 抽象數據類型和數據結構導論
數據類型、數據結構和表示、實現,固有數據類型的特點
抽象數據類型的說明、高級語言對抽象數據類型的支持。抽象數據類型的優點:簡單、完整、獨立、安全等。
C++、PASCAL、ADA等高級語言支持抽象數據類型的能力、相同數據類型和類屬數據類型。
3、 線性表、棧和隊列
順序分配、鏈接分配的表示和實現。
各種鏈表:單鏈、雙鏈、多鏈、循環鏈表、十字鏈表等。
棧、隊列、雙向隊列及優先隊列。
表達式計算、子集和問題等。
表、隊、棧等各種情況的時間及空間複雜性分析
4、 樹及二叉樹
遍歷、存儲、基本概念、性質、樹的應有舉例。
二叉樹:遍歷、各種搜索樹、分類二叉樹、樹與二叉樹和轉換、最優二叉樹、平衡樹的分析等等。
最優葉子查找樹及HUFFUMAN算法。
堆及優先隊列的實現等等。
各種樹操作特性、性質、實現。
2-3樹及AVL樹、集合表示及操作
各種數及二叉樹的相關操作的時間及空間複雜性分析;
5、 圖的各種操作及算法分析比較
遍歷:DFS/BFS/PFS/方法以及存儲、基本概念、性質、
連通分量的求法;
最小生成樹、最短路徑;
拓撲排序、關鍵路徑的求法及實現等;
各種圖的算法的分析及比較、算法複雜性的級別等
6、 串的存儲及KMP算法
存儲、基本運算、樣品匹配等;
KMP算法及時間及空間複雜性分析
7、 查找技術
順序查找、有序表的查找、索引順序查找、二分查找法、FIB0NACCI查找等
HASHING查找技術。
查最大項及次最大項的方法。
順序統計、勝者樹及敗者樹。
查找算法的分析及比較、算法時間及空間複雜性等。
8、 排序技術
最好、最壞、平均排序的時間複雜性分析
合併排序技術
各種排序方法:插入排序、快速排序、SHELL排序、堆及選擇排序、
多關鍵字排序、基數排序法。
最佳排序速度
排序的時間及空間複雜性分析
9、 外部排序技術
外存及分類技術簡介
緩衝區管理、初始合併串、置換選擇分類技術
磁帶合併:平衡合併及多階段合併。
磁盤合併:最佳合併樹模型
時間及空間複雜性分析
10、基本文件系統
文件組織:順序、隨機、直接、倒排文件
索引技術:柱面索引、盤面索引、HASHING索引、樹索引。
B樹及B+樹
ISAM及VSAM文件。
各種文件的特點及分析
11、基本算法的設計
回溯法及分治法
查找及分解技術
動態程序及設計技術
貪心法
算法的形式描述及分析、比較、時空需求