本書從數據類型的角度,分別討論了4大類型的數據結構的邏輯特性、存儲表示及其應用。為了便于讀者理解,書中對數據結構眾多知識點的來龍去脈都做了詳細的解釋和說明,并配有大量的算法實例穿插其間;書的最后還專門辟出一章,用來講解數據結構在解決實際問題中的應用示例,便于舉一反三。本書的第1章綜述數據、數據結構和抽象數據類型等基本概念和算法;第2章、第4至7章從數據類型的角度,分別討論線性表、棧和隊列、串和數組、二叉樹和樹以及圖和廣義表等數據結構的邏輯特性、存儲表示及其應用;第3章和第8章分別討論排序和查找表的各種實現(xiàn)方法,其中除介紹各種實現(xiàn)方法外,并著重對算法的時間效率做了定性的分析,對算法的應用場合及適用范圍進行了比較和介紹;第9章討論常用的文件結構;第10章以8個數據結構的綜合應用為例,闡述以抽象數據類型為中心的程序設計方法,這一章的內容相當于“數據結構學習指導”,本意是為學生提供一個“綜合利用數據結構知識編制小型軟件”的規(guī)范示例。書的每一章都配有適量的習題,供讀者復習提高之用。教授學時可為40至60,另外應留有一定的時間供學生完成適量的上機作業(yè)。本書在編排方面注意了數據結構本身的內在聯(lián)系和從易到難的學習規(guī)律。例如,將排序安排在第3章,因為對讀者來說,排序的內容比較容易理解,而且所涉及的數據結構主要是線性結構;又如對棧和隊列的學習重點應是它們的應用,因此在第4章里更多地列舉了棧和隊列的應用例子;在第5章中,結合C語言的串類型講解串結構的知識內容,以使實際和理論在應用中和諧統(tǒng)一起來,等等。又如為了降低理解難度,盡管廣義表屬線性結構,但由于它的“遞歸”特性,使得涉及廣義表操作的算法和樹更相似,因此將它放在圖之后進行討論。全書采用了類C語言作為數據結構和操作算法的描述工具,它是C語言的一個精選子集,同時又采用了C++對C的非面向對象的增強功能。例如動態(tài)分配和釋放順序存儲結構的空間;利用引用參數傳遞運算的結果;使用缺省參數以簡化函數參數表的描述,等等。這些措施使數據類型的定義和數據結構相關操作算法的描述更加簡明清晰、可讀性更好,轉變成C程序也極方便。另一方面又可把類型定義和操作算法稍加技術處理,就很容易將其封裝成類,并進一步轉化成面向對象的程序模型。從課程性質上講,“數據結構”是一門專業(yè)技術基礎課。它的教學要求應當是:學會從問題入手,分析研究計算機加工的數據結構的特性,以便為應用所涉及的數據選擇適當的邏輯結構、存儲機構及其相應的操作算法,并初步掌握時間和空間分析技術。另一方面,要求學生會書寫符合軟件工程規(guī)范的文件,編寫的程序代碼應結構清晰、正確易讀,能上機調試并排除錯誤。數據結構比高級程序設計語言課有著更高的要求,它重在培養(yǎng)學生的數據抽象能力。在學習本書時應至少掌握一門高級程序設計的知識,如掌握的是C語言則最為理想;若能具有初步的離散數學和概率論的知識,對書中某些內容的理解會更容易。學習本書的同時還可把《數據結構》(C語言版)作為配套參考用書。與本書配套的還有一張軟盤。本書內容豐富,概念闡述細致清楚,除可作為普通高等院校計算機類專業(yè)的教材之外,還可作為信息類相關專業(yè)“數據結構”或“軟件基礎”課程的本科教材。對于計算機類專業(yè)的學生或從事計算機工程與應用工作的科技工作者,本書也是一本實用的參考手冊。