數(shù)據(jù)結(jié)構(gòu)是計算機存儲、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運行或者存儲效率。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。本書采用程序設(shè)計語言Python作為具體的實現(xiàn)語言,介紹了可以有效處理大量數(shù)據(jù)的編程方法與技巧,不僅給出許多重要算法的實例,還介紹了計算復(fù)雜性的相關(guān)內(nèi)容,以便計算機程序員對所用算法的效率進行判斷。
全書共20章。1.Python編程101:對使用Python語言編程進行總體介紹,包括創(chuàng)建對象、對象調(diào)用方法、運算符重載、讀取文件方法、XML文件等內(nèi)容;2.計算復(fù)雜度:包括計算機體系結(jié)構(gòu)介紹、常見的計算復(fù)雜性、攤銷復(fù)雜度的方法等;3.遞歸:包括時棧和堆的概念、簡單遞歸函數(shù)的編寫、運行,遞歸計算機圖形學(xué)、列表與字符串等;4.排序:包括選擇排序、歸并排序、快速排序、鏈表、棧和隊列等內(nèi)容;5.集合與映射:數(shù)獨游戲介紹、集、散列等相關(guān)概念,最后分析規(guī)劃問題;6.樹:抽象語法樹和表達、前綴和后綴表達式、解析前綴表達式、二叉搜索樹等內(nèi)容;7.圖:包括圖的定義及理論、存儲結(jié)構(gòu)及算法實現(xiàn)、Kruskal算法、Dijkstra算法、圖的表示方法等;8.Bloom過濾器、Trie數(shù)據(jù)類型等相關(guān)內(nèi)容;9.堆:包括堆的主要思想及其建立、排序算法、與其他算法的比較等;10.平衡二叉搜索樹:二叉搜索樹的概念、存儲結(jié)構(gòu)與性質(zhì)、AVL樹與 Splay樹等具體實例;11.B樹:包括關(guān)系型數(shù)據(jù)庫的概念、B樹的組織結(jié)構(gòu)、優(yōu)勢、實現(xiàn)、B樹的插入與刪除等內(nèi)容;12.啟發(fā)式搜索:包括深度優(yōu)先搜索與廣度優(yōu)先搜索、A*搜索、最佳搜索等相關(guān)內(nèi)容;13.附錄A:整數(shù)操作符;14.附錄B:浮算子;15.附錄C:字符串運算符和方法;16.附錄D:列表操作符和方法;17.附錄E:字典操作和方法;18.附錄F:Turtle方法;19附錄G:TurtleScreen方法;20.附錄H:完整的程序。
作者Kent D.Lee博士是美國艾奧瓦洲路德學(xué)院計算機科學(xué)教授,已成功出版兩本著作:Python編程基礎(chǔ)和編程語言基礎(chǔ)。另一作者Steve Hubbard博士是路德學(xué)院數(shù)學(xué)與計算機科學(xué)系教授。
本書介紹了初級與高級的數(shù)據(jù)結(jié)構(gòu)和算法問題,每一章開始提供了學(xué)習(xí)目標,復(fù)習(xí)題和編程練習(xí),以及眾多的例證;同時在相關(guān)的網(wǎng)站提供可下載的程序和補充文件。本書可以作為計算機學(xué)科相關(guān)專業(yè)的教材或參考書,同時對計算機科技工作者也有參考價值。
李亞寧,碩士研究生
(中國科學(xué)院自動化研究所)