數據結構是高等院校計算機科學與技術、軟件工程、大數據、人工智能等專業的一門重要的專業基礎課程,是算法設計與分析、人工智能、機器學習、編譯原理等眾多後續課程的重要基礎,它對軟件開發具有舉足輕重的作用。目前,在使用計算機的各種軟件時,都需要處理各種數據,而這些軟件的設計都需要研究數據之間關繫的表示與處理,這正是數據結構的研究內容。數據結構是計算機、軟件工程大多數專業課程的核心基礎,直接決定著其他專業課程的學習效果。通過學習數據結構,可為算法設計和軟件開發等方面課程的學習打下堅實的知識基礎。
本書比較繫統地介紹數據結構中的線性結構、樹形結構、圖結構及查找、排序技術,闡述各種數據結構的邏輯關繫,討論它們在計算機中的存儲表示及其運算。本書理論與實踐並重,結合教學工作實際,除了對數據結構中的抽像概念和數據類型的基本運算進行詳細講解外,還通過豐富的圖表和實例、完整的代碼講解算法的應用,幫助讀者理解每種數據類型常見的基本操作及其具體應用案例的算法思想,使其學會運用數據結構知識解決日常生活中的實際問題。本書主張通過算法實現來強化對算法的理解,因此,不僅精選了一些涵蓋知識點豐富且具有代表性的案例,還挑選了部分歷年考研試題作為課後習題,所有算法均采用Python語言給出完整實現,方便讀者學習和理解,從而鞏固所學知識點。
由於Python語言強大的第三方工具庫、開發速度快捷、擅長數據分析與處理等優勢,被廣泛應用於人工智能、機器學習、大數據分析與處理,且已成為主流的開發語言之一,是數據分析與處理的工具。國內各高校均開設了Python語言程序設計課程,因此,本書采用Python語言作為描述語言,也為讀者學習人工智能、機器學習、大數據分析與處理打下牢固的基礎。
本書內容
本書共分為8章,內容分別為數據結構與算法概述,線性表,棧與隊列,串、數組與廣義表,樹,圖,查找和排序。
第1章:如果讀者剛接觸數據結構,這一章將告訴你數據結構是什麼,以及本書的學習目標、學習方法和學習內容。另外,還介紹了本書對算法的描述方法。
第2章:主要介紹線性表。首先講解線性表的邏輯結構,然後介紹線性表的各種常用存儲結構,在每一節均給出了算法的具體應用。通過學習本章內容,讀者可以掌握順序表、動態鏈表的基本操作及應用。
第3章:主要介紹操作受限的線性表——棧和隊列,內容包括棧的定義,棧的基本操作及棧與遞歸的轉化,隊列的概念,順序隊列和鏈式隊列的運算。
第4章:主要介紹串、數組與廣義表。串是另一種特殊的線性表,數組和隊列可看作是線性表的推廣。首先介紹串的概念、串的各種存儲表示及串的模式匹配算法,然後介紹數組的概念、數組(矩陣)的存儲結構及運算、特殊矩陣,後介紹廣義表的概念、表示與存儲方式。
第5章:主要介紹非線性數據結構——樹和二叉樹。首先介紹樹和二叉樹的概念,然後介紹樹和二叉樹的存儲表示、二叉樹的性質、二叉樹的遍歷和線索化、樹、森林與二叉樹的轉換及哈夫曼樹。
第6章:主要介紹非線性數據結構——圖。首先介紹圖的概念和存儲結構,然後介紹圖的遍歷、小生成樹、拓撲排序、關鍵路徑及短路徑。
第7章:主要介紹數據結構的常用技術——查找。首先介紹查找的概念,然後結合具體實例介紹各種查找算法,並給出完整的實現代碼。
第8章:主要介紹數據結構的常用技術——排序。首先介紹排序的相關概念,然後介紹各種排序技術,並給出具體的實現算法。
配套源碼、PPT課件、教學視頻等下載
本書提供配套的教學資源,包括教學視頻、電子課件、示例代碼、習題答案等。讀者可用微信掃描下面二維碼下載。如果發現問題或者有任何建議,可通過郵件與作者聯繫,,郵件主題寫“Python數據結構與算法”。
本書作者與鳴謝
參與本書編寫的有孫玉勝、陳銳、張志鋒、崔建濤、鄭倩、劉育熙、桑永宣。
在本書的出版過程中,得到了鄭州輕工業大學和清華大學出版社的大力支持,在此表示衷心感謝。尤其感謝清華大學出版社的編輯們對於本書順利出版所做的辛勤工作。
在本書編寫的過程中,參閱了大量的相關教材、著作,個別案例也參考了網絡資源,在此向各位原著者致敬!
由於作者水平有限,書中難免存在一些不足之處,懇請讀者批評指正。
編 者
2022年9月