圖書信息
出版社: 北京大學出版社; 第1版 (2009年3月1日)
叢書名: 21世紀全國高職高專計算機系列實用規劃教材
平裝: 279頁
正文語種: 簡體中文
開本: 16
ISBN: 9787301144756
條形碼: 9787301144756
尺寸: 25.6 x 20 x 1.2 cm
重量: 481 g
內容簡介
《數據結構(C#語言描述)》使用C#語言及面向對象的方法講解了數據結構的基礎知識,並針對數據結構中的難點及關鍵點製作了配套的視頻教程,使用動畫加講解的方法對數據結構及算法進行了詳細的介紹。全書共分10章,第1-6章主要介紹了線性表、棧、佇列、串、樹、圖這些基本的數據結構;第7、8章《數據結構(C#語言描述)》使用C#語言及面向對象的方法介紹了數據結構的基礎知識,並針對數據結構中的難點及關鍵點,配套了視頻教程,使用動畫加講解的方式對數據結構及算法進行了詳細地介紹。介紹了查找和排序算法及哈希表;前9章每章的結尾部分均配備了實訓指導,用以加深對各個章節的理解;第10章是綜合實訓部分,通過實例演示數據結構及算法在程式中的使用。附書光碟內容為與《數據結構(C#語言描述)》配套使用的視頻教程。 《數據結構(C#語言描述)》體系新穎,層次清晰,特別注重可讀性和實用性,並結合數據結構知識深入C#類庫進行解析。全書通谷易懂、由淺入深,不但使讀者了解了數據結構知識,而且對C#語言有了更進一步的認識。
《數據結構(C#語言描述)》既可以作為高等職業院校計算機及相關專業的教材,也適合作為自學教材以及C#程式開發人員的參考書。
目錄
第1章 緒論
1.1 什麼是數據結構
1.1.1 數據結構的產生與發展
1.1.2 數據和數據結構
1.1.3 數據的邏輯結構
1.1.4 數據的存儲結構
1.1.5 數據類型
1.2 算法與算法分析
1.2.1 算法
1.2.2 算法設計的目標
1.2.3 算法的時間複雜度
1.2.4 算法的空間複雜度
1.3 本章小結
1.4 習題
第2章 線性表
2.1 線性表的定義
2.2 線性表的順序存儲結構——順序表
2.2.1 順序表的特點
2.2.2 數組
2.2.3 System.Collections.ArrayList
2.2.4 類型安全
2.3 線性表的鏈式存儲結構——鍊表
2.3.1 單向鍊表
2.3.2 循環鍊表
2.3.3 雙向鍊表
2.4 本章小結
2.5 實訓指導:虛擬線性表
2.6 習題
第3章 棧和佇列
3.1 棧
3.1.1 棧的概念及操作
3.1.2 System.Collections.Stack
3.1.3 棧的套用
3.1.4 雙向棧
3.2 佇列
3.2.1 佇列的概念及操作
3.2.2 循環佇列
3.2.3 System.Collections.Queue
3.3 本章小結
3.4 實訓指導:虛擬循環佇列
3.5 習題
第4章 串
4.1 串的基本概念
4.2 Strin9
4.3 System.Text.StringBuilder
4.4 串的模式匹配
4.4.1 Brute.Force算法
4.4.2 kmp算法
4.5 本章小結
4.6 實訓指導:求最長公共子串
4.7 習題
第5章 樹
5.1 樹的基本概念
5.1.1 樹的定義
5.1.2 樹的表示
5.1.3 樹的基本術語
5.2 二叉樹
5.2.1 二叉樹的基本概念
5.2.2 二叉樹的存儲結構
5.3 二叉樹的遍歷
5.3.1 二叉樹的深度優先遍歷
5.3.2 二叉樹的廣度優先遍歷
5.4 線索二叉樹
5.4.1 線索二叉樹的定義
5.4.2 中序線索二又樹
5.5 樹和森林
5.5.1 樹的存儲結構
5.5.2 森林、樹、二叉樹的相互轉換
5.6 可繪製二叉樹的設計
5.6.1 二叉樹結點的位置關係
5.6.2 接口設計
5.6.3 二叉樹繪製類的設計
5.6.4 實現可繪製二叉樹
5.7 二叉樹畫樹算法
5.7.1 滿二叉樹畫法
5.7.2 界內畫法
5.7.3 最小面積畫法
5.8 本章小結
5.9 實訓指導:虛擬二叉樹
5.10 習題
第6章 圖
6.1 基本概念和術語
6.2 圖的存儲結構
6.2.1 鄰接矩陣表示法
6.2.2 鄰接表表示法
6.3 圖的遍歷
6.3.1 深度優先搜尋遍歷
6.3.2 廣度優先搜尋遍歷
6.3.3 非連通圖的遍歷
6.4 生成樹和最小生成樹
6.4.1 生成樹
6.4.2 最小生成樹
6.4.3 普里姆算法
6.4.4 克魯斯卡爾算法
6.5 最短路徑
6.5.1 單源點最短路徑
6.5.2 所有頂點之間的最短路徑
6.6 本章小結
6.7 實訓指導:迷宮最短路徑問題
6.8 習題
第7章 查找
7.1 查找的基本概念
7.2 順序查找
7.3 二分查找
7.3.1 二分查找的基本原理
7.3.2 二分查找的算法實現
7.3.3 Array. Binary Search方法
7.3.4 剖析System. Collections. SortedList
7.4 分塊查找
7.5 二叉查找樹
7.5.1 二叉查找樹的定義
7.5.2 二叉查找樹的查找
7.5.3 二又查找樹的插入
7.5.4 二叉查找樹的刪除
7.5.5 二叉查找樹的代碼實現
7.6 本章小結
7.7 實訓指導:Array.BinarySearch的使用
7.8 習題
第8章 哈希表
8.1 概念引入
8.2 構造哈希函式的方法
8.2.1 直接定址法
8.2.2 數字分析法
8.2.3 除留餘數法
8.3 哈希衝突解決方法
8.3.1 閉散列法(開放地址法)
8.3.2 開散列法(鏈地址法)
8.4 剖析System. Collections. Hashtable
8.4.1 Hashtable的實現原理
8.4.2 Hashtable的代碼實現
8.5 剖析Dictionary
8.5.1 Dictionary〈TKey,TValue>類實現原理
8.5.2 Dictionary的代碼實現
8.6 本章小結
8.7 實訓指導:虛擬哈希表
8.8 習題
第9章 排序
9.1 排序的基本概念
9.2 插入排序
9.2.1 直接插入排序
9.2.2 希爾排序
9.3 交換排序
9.3.1 冒泡排序
9.3.2 快速排序
9.4 選擇排序
9.4.1 直接選擇排序
9.4.2 堆排序
9.5 歸併排序
9.5.1 二路歸併排序
9.5.2 二路歸併排序的實現
9.6 本章小結
9.7 實訓指導:使用IComparer接口進行排序
9.8 習題
第10章 綜合實訓——八數碼問題
10.1 什麼是八數碼問題
10.2 八數碼問題的解析
10.2.1 從初始狀態到達目標狀態是否有解
10.2.2 使用什麼方法求解八數碼問題的最優解
10.2.3 如何避免重複訪問一個狀態
10.2.4 怎樣記錄查找路徑
10.2.5 使用什麼數據結構表示棋盤狀態
10.3 設計目標
10.4 界面設計
10.5 代碼編寫
10.5.1 Move Direction.cs
10.5.2 AIResult.cs
10.5.3 Hash Helpers.cs
10.5.4 Simple Dictitonary.cs
10.5.5 Num Switch.cs
10.5.6 IEiglat NumAI.cs
10.5.7 BFS_AI.cs
10.5.8 Main Form.cs
10.6 調試運行
10.7 思考與改進
參考文獻