編輯推薦
《數據結構(第2版)》特色:
《數據結構(第2版)》的主要任務是介紹並探討有關數據組織、算法設計、時間和空間效率的概念和通用分析方法,幫助讀者學會數據的組織方法和現實世界問題在計算機內部的錶示方法,針對問題的應用背景分析,選擇閤適的數據結構,從而培養高級程序設計技能。
從實際應用問題齣發,導齣各種經典數據結構的定義、實現(存儲)方法以及操作實現,並以更豐富的綜閤應用案例幫助讀者增強對理論的感性認識,從而明白這些數據結構為什麼存在、以及在什麼情況下可以解決什麼樣的問題。
提供瞭豐富的學習資源,包括源代碼及配套電子課件、浙江大學提供的在綫係統PTA、《數據結構學習與實驗指導(第2版)》等。讀者可以通過使用這些學習資源隨時檢測自己的學習效果與編程能力。
內容簡介
《數據結構(第2版)》的主要任務是介紹並探討有關數據組織、算法設計、時間和空間效率的概念和通用分析方法,幫助讀者學會數據的組織方法和現實世界問題在計算機內部的錶示方法,針對問題的應用背景分析,選擇閤適的數據結構,從而培養高級程序設計技能。
《數據結構(第2版)》第1章介紹瞭數據結構與算法的基本概念;第2章是對C語言關鍵內容的復習,為後續章節理解數據結構的實現做準備;第3章至第7章分彆介紹瞭綫性錶、樹、散列錶、圖、排序算法等經典數據結構與算法;最後在第8章通過對兩個實際生活中提煉齣的問題的解答,幫助讀者更深刻地體會數據結構的應用。
《數據結構(第2版)》可作為高等學校計算機類專業“數據結構”課程的教材。
作者簡介
陳越,浙江大學計算機科學與技術學院教授,教育部高等學校軟件工程專業教學指導委員會委員。為程序設計能力標準化測試(PAT)係統的創始人。與何欽銘教授共同在“中國大學MOOC”和網易“雲課程”平颱開設在綫開放課程“數據結構”,注冊人數纍計超過8萬人。為國傢精品課程“軟件工程”、國傢雙語示範課程“數據結構與算法”、國傢教學團隊“程序設計係列課程教學團隊”的負責人。曾獲教學成果二等奬、浙江省教學成果一等奬、寶鋼優秀教師奬等。
內頁插圖
目錄
第1章 概論
1.1 引子
1.2 數據結構
1.2.1 定義
1.2.2 抽象數據類型
1.3 算法
1.3.1 定義
1.3.2 算法復雜度
1.3.3 漸進錶示法
1.4 應用實例:最大子列和問題
本章小結
習題
第2章 數據結構實現基礎
2.1 引子
2.2 數據存儲基礎
2.2.1 數組
2.2.2 類型定義typedef
2.2.3 指針
2.2.4 結構
2.2.5 鏈錶
2.3 流程控製基礎
2.3.1 分支控製
2.3.2 循環控製
2.3.3 函數與遞歸
本章小結
習題
第3章 綫性結構
3.1 引子
3.2 綫性錶的定義與實現
3.2.1 綫性錶的定義
3.2.2 綫性錶的順序存儲實現
3.2.3 綫性錶的鏈式存儲實現
3.2.4 廣義錶與多重鏈錶
3.3 堆棧
3.3.1 堆棧的定義
3.3.2 堆棧的實現
3.3.3 堆棧應用:錶達式求值
3.4 隊列
3.4.1 隊列的定義
3.4.2 隊列的實現
3.5 應用實例
3.5.1 多項式加法運算
3.5.2 迷宮問題
本章小結
習題
第4章 樹
4.1 引子
4.1.1 問題的提齣
4.1.2 查找
4.2 樹的定義、錶示和術語
4.3 二叉樹
4.3.1 二叉樹的定義及其邏輯錶示
4.3.2 二叉樹的性質
4.3.3 二叉樹的存儲結構
4.3.4 二叉樹的操作
4.4 二叉搜索樹
4.4.1 二叉搜索樹的定義
4.4.2 二叉搜索樹的動態查找
4.4.3 二叉搜索樹的插入
4.4.4 二叉搜索樹的刪除
4.5 平衡二叉樹
4.5.1 平衡二叉樹的定義
4.5.2 平衡二叉樹的調整
4.6 樹的應用
4.6.1 堆及其操作
4.6.2 哈夫曼樹
4.6.3 集閤及其運算
本章小結
習題
第5章 散列查找
5.1 引子
5.2 基本概念
5.3 散列函數的構造方法
5.3.1 數字關鍵詞的散列函數構造
5.3.2 字符串關鍵詞的散列函數構造
5.4 處理衝突的方法
5.4.1 開放定址法
5.4.2 分離鏈接法
5.5 散列錶的性能分析
5.6 應用實例
本章小結
習題
第6章 圖
6.1 引子
6.2 圖的基本概念
6.2.1 圖的定義和術語
6.2.2 圖的抽象數據類型
6.3 圖的存儲結構
6.3.1 鄰接矩陣
6.3.2 鄰接錶
6.4 圖的遍曆
6.4.1 迷宮探索
6.4.2 深度優先搜索
6.4.3 廣度優先搜索
6.5 最小生成樹
6.5.1 生成樹的構建與最小生成樹的概念
6.5.2 構造最小生成樹的Prim算法
6.5.3 構造最小生成樹的Kruskal算法
6.6 最短路徑
6.6.1 單源最短路徑
6.6.2 每一對頂點之間的最短路徑
6.7 拓撲排序
6.8 關鍵路徑計算
6.9 應用實例
6.9.1 六度空間理論
6.9.2 六度分隔理論的驗證
本章小結
習題
第7章 排序
7.1 引子
7.2 選擇排序
7.2.1 簡單選擇排序
7.2.2 堆排序
7.3 插入排序
7.3.1 簡單插入排序
7.3.2 希爾排序
7.4 交換排序
7.4.1 冒泡排序
7.4.2 快速排序
7.5 歸並排序
7.6 基數排序
7.6.1 桶排序
7.6.2 基數排序
7.6.3 單關鍵字的基數分解
7.7 外部排序
7.8 排序的比較和應用
7.8.1 排序算法的比較
7.8.2 排序算法應用案例
本章小結
習題
第8章 綜閤應用案例分析
8.1 銀行排隊問題
8.1.1 單隊列多窗口服務
8.1.2 單隊列多窗口+VIP服務
8.2 暢通工程問題
8.2.1 建設道路數量問題
8.2.2 最低成本建設問題
本章小結
習題
附錄PTA使用說明
參考文獻
前言/序言
“數據結構”是計算機類專業的重要專業基礎課。它所討論的知識內容和提倡的技術方法,無論對進一步學習計算機相關領域的其他課程,還是對從事大型信息工程的開發,都有著樞紐的作用。
解決問題往往有多種方法,且不同方法之間的效率可能相差甚遠。解決問題方法的效率,與數據的組織方式有關,與空間的利用效率有關,也與方法的巧妙程度有關。本書的主要任務是介紹並探討有關數據組織、算法設計、時間和空間效率的概念和通用分析方法,幫助讀者學會數據的組織方法和現實世界問題在計算機內部的錶示方法,針對問題的應用背景分析,選擇閤適的數據結構,從而培養高級程序設計技能。
本書的特點是從實際應用問題齣發,導齣各種經典數據結構的定義、實現(存儲)方法以及操作實現,並以更豐富的綜閤應用案例幫助讀者增強對理論的感性認識,從而明白這些數據結構為什麼存在,以及在什麼情況下可以最好地解決什麼樣的問題。
數據結構的思想和原理是不依賴於編程語言的,但對於每一個抽象概念的具體實現和應用則需要一種編程語言作為載體。本書根據國內多數學校計算機專業教學的實際情況,選擇瞭C語言作為具體實現的語言,並提供瞭大量可以直接編譯運行的源代碼。不僅使得學生在學習時容易起步,可以在現有源代碼的基礎上不斷修改擴充,從而解決更為復雜的問題,而且也為IT專業人士提供瞭方便的經典代碼庫。
本書第1章介紹瞭數據結構與算法的基本概念和兩者的關聯,重點介紹瞭抽象數據類型和算法復雜度的概念;第2章基本上是對C語言關鍵內容的復習,為後續章節理解數據結構的實現做準備;第3章介紹瞭綫性錶以及最基本的兩種應用——堆棧和隊列;第4章討論一種重要的非綫性結構——樹,重點介紹瞭二叉樹和搜索樹,並將查找、哈夫曼樹和集閤錶示等作為樹形結構的應用進行瞭討論;第5章通過對從海量信息中高效查找關鍵字問題的再思考,引齣對散列錶和經典哈希映射技術的討論;第6章介紹圖的各種錶示方法和相關算法;第7章討論瞭各種經典的排序算法;最後在第8章通過對兩個實際生活中提煉齣的問題的求解,幫助讀者更深刻體會數據結構的應用。
讀者可以根據自身的基礎選擇相應章節進行閱讀,熟悉C語言的讀者完全可以跳過第2章有關C語言基礎的部分。目錄中帶*號的章節及習題中帶*號的題目,是本書的擴展內容,讀者可以在學習基礎內容之後再閱讀擴展內容。
本書作為第2版,除瞭修訂第1版的錯誤外,還重新整理瞭全部源代碼,提供瞭部分微視頻,並提供瞭新的在綫練習資源。希望讀者能通過本書的學習提高實踐能力,使數據結構與算法成為用計算機解決實際問題的有效工具。
數據結構(第2版) [Dat Structure] 下載 mobi epub pdf txt 電子書