出版時間:2009-6 出版社:國防工業(yè)出版社 作者:周海英,馬巧梅,靳雁霞 頁數:322
前言
數據結構課程作為國內計算機及信息管理等相關專業(yè)的重要專業(yè)基礎課已有二十多年的教學實踐了。該門課程對于其他計算機專業(yè)課程的學習會打下重要的知識基礎,已成為計算機類本??茖W生的核心課程。從國內外的教學情況可以看出,數據結構課程的基本內容體系已漸趨成熟,其中的一些內容吸收了離散數學中的部分理論,對計算機專業(yè)課程的學習和軟件開發(fā)提供了重要的理論和方法基礎。本書的編寫是根據國內該課程的教學情況,結合研究生入學考試中數據結構的重要知識點,參考了大量的相關書籍后編寫完成,可以作為本科、專科數據結構課程的教材和參考書,也可作為參加研究生考試的學生的輔導教材。本書在編寫中以理論和實踐相結合,根據作者多年的教學實踐總結出的經驗在講解數據結構算法和一般理論的基礎上,給出了大量的典型例題和習題,便于學生在掌握理論方法的同時就能熟練把握課程重要的知識點和方法,并通過對例題的消化理解以及習題練習迅速掌握重要的解題方法和算法設計技巧,為提高學習的效率和效果提供良好的幫助。本書在第1章到第4章中主要介紹了數據結構的基本概念,線性表以及棧和隊列等線性結構的基本知識,這些內容是數據結構的重要基礎,在內容上涉及大量的概念和算法,本書在編寫時給出了大量的例題,其中一些就是定義和基本概念方面的問答題,通過這些內容使讀者了解數據結構研究的基本內容和重要方法,為后面章節(jié)的學習打好基礎。第5章介紹了遞歸,本章內容主要與算法分析與設計課程有聯系,在講授時可以根據教學要求進行選擇。第6章介紹了數組、特殊矩陣和廣義表方面的內容,這章的內容與前面章節(jié)的內容有關聯,但內容的邏輯性上又有一定的獨立性。第7章到第8章主要介紹樹和圖兩種常用的非線性結構,它們是數據結構中的重點內容之一,對解決實際問題提供了重要的方法論基礎,本書安排了大量篇幅給予講解。第9章和第10章的排序和查找是實際應用中最常見的問題,對于算法設計和編程有重要的幫助,也是數據結構中的另一個重點內容之一。第11章介紹文件,這章的內容可以根據課時情況作為選講內容。
內容概要
本書主要介紹了數據結構的基本概念和基本算法。全書共分11章。前6章主要介紹了線性表、棧和隊列、串、遞歸、數組特殊矩陣和廣義表,后5章主要介紹了樹、圖、奎找、排序和文件。 本書內容詳實,基本原理與算法實現相互結合并配套了大量典型例題,便于初學者掌握重要的概念、原理和算法設計方法,也方便了讀者復習該課程的重要知識點。 本書可作為高等院校計算機及相關專業(yè)本科生數據結構課程的教材,也可作為計算機工程技術人員學習的參考書。
書籍目錄
第1章 緒論 1.1 什么是數據結構 1.2 基本概念和術語 1.3 數據結構的發(fā)展及其重要地位 1.4 算法的描述和算法分析 1.4.1 算法的描述 1.4.2 算法設計的要求 1.4.3 算法效率的度量 1.4.4 算法的存儲空間需求 1.5 典型例題 習題1第2章 線性表 2.1 線性表的邏輯結構 2.1.1 線性表的定義 2.1.2 線性表的基本操作 2.2 線性表的順序存儲及運算實現 2.2.1 順序表 2.2.2 順序表上基本運算的實現 2.2.3 順序表應用舉例 2.3 線性表的鏈式存儲和運算實現 2.3.1 單鏈表 2.3.2 單鏈表上基本運算的實現 2.3.3 循環(huán)鏈表 2.3.4 雙向鏈表 2.3.5 靜態(tài)鏈表 2.3.6 單鏈表應用舉例 2.4 順序表和鏈表的比較 2.5 典型例題 習題2第3章 棧和隊列 3.1 棧 3.1.1 棧的定義及基本運算 3.1.2 棧的存儲實現和運算實現 3.2 棧的應用舉例 3.3 隊列 3.3.1 隊列的定義及基本運算 3.3.2 隊列的存儲實現及運算實現 3.4 隊列應用舉例 3.5 典型例題 習題3第4章 串 4.1 串的概念和基本運算 4.1.1 串的基本概念 4.1.2 串的基本運算 4.2 串的存儲結構 4.2.1 串的靜態(tài)存儲結構 4.2.2 串的動態(tài)存儲結構 4.3 字符串的模式匹配 4.3.1 Brute-Force算法 4.3.2 KMP算法 4.4 串應用——文本編輯軟件 4.5 典型例題 習題4第5章 遞歸 5.1 遞歸的概念 5.2 用C語言實現遞歸 ……第6章 數組、特殊矩陣和廣義表第7章 樹形結構第8章 圖第9章 查找第10章 排序第11章 文件參考文獻
章節(jié)摘錄
插圖:第1章緒論自從第一臺電子計算機問世以來,計算機科學得到了飛速的發(fā)展,與此同時,計算機的應用領域也從最初的科學計算逐步發(fā)展到更高級的階段,如圖像處理、語音識別、機器翻譯、人工智能等多個領域?,F在計算機處理的對象不僅是簡單的數值或字符,而且?guī)в胁煌Y構的各種數據。因此,要設計一個好的軟件,除了要掌握一定的計算機程序設計語言之外,還必須研究各類數據的特性以及數據之間存在的關系。這是因為計算機要加工處理數據,必須能夠將數據輸入到計算機中,并能夠以恰當的方式在計算機中表示并存儲起來,還要便于根據需要對數據進行加工和處理,因而當各種數據輸入計算機之前,必須先按某種數據的組織.形式將數據組織好,然后考慮以什么樣的方式進行存儲,這種組織形式和存儲方式直接關系到程序對數據的處理能力和處理效率,并影響到問題的解決。綜上所述,可以這樣理解,計算機在解決一個問題時,先將問題中的有關對象抽取出來形成數據,并將這些數據組織在一起。為了要合理組織這些數據,就要先找到各個數據之間的邏輯關系,即數據的邏輯結構,從而選擇一種合理的組織方式。其次,還要考慮計算機如何存儲這些組織好的數據,即數據的物理結構或存儲結構。因此,數據結構這門課程就是要解決兩個主要的問題:數據的邏輯結構和數據的存儲結構。1.1什么是數據結構一般來說,當用計算機解決一個具體問題時,大致都需要經過下面幾個步驟:首先要從具體問題中抽象出一個適當的數學模型(或數學公式),然后設計一個描述此數學模型的算法,最后利用合適的程序設計語言來編寫程序,進行測試、調整,直至最終得到滿意的解答。抽象數學模型的過程實質上是分析問題,從中提取操作的對象并找出這些操作對象之間含有的關系,然后用數學的語言加以描述的過程。事實上,有些問題的求解過程可以通過一定的方程進行一定的運算來獲取。例如,求解梁架結構中應力的數學模型為線性方程組;預報人口增長情況的數學模型為微分方程。然而,更多的非數值計算問題卻無法用數學方程加以描述。
編輯推薦
《數據結構與算法設計(第2版)》特色:選配了大量的典型例題和經典習題;精選的部分習題為近年來考研“高頻題”;突出算法設計與概念方法相互配合講解的技巧。《數據結構與算法設計(第2版)》配套的編程練習庫CodeLab,在線即時反饋。本編程練習庫與北美136所大學同步。有興趣的讀者可以與jtwang@ndip.cn聯系。
圖書封面
評論、評分、閱讀與下載