數(shù)據結構

出版時間:2010-6  出版社:清華大學出版社  作者:段恩澤,肖守柏 主編  頁數(shù):291  
Tag標簽:無  

前言

  自從美國唐·歐·克努特教授用匯編語言編寫的《計算機程序設計技巧》第一卷《基本算法》問世以來,已經出現(xiàn)了用Pascal、Java、C、C++、C#等語言編寫的數(shù)據結構方面的書??傮w說來,這些語言基本上分為面向過程的語言和面向對象的語言兩大類,也出現(xiàn)過采用兩種語言描述數(shù)據結構的書籍,如C和C++語言描述,但作者實際上是按照C++語言描述。同時采用面向過程和面向對象語言描述數(shù)據結構,目前國內基本上是空白。對于同一種數(shù)據結構與算法,同時采用面向過程和面向對象語言進行描述,可以從中更深刻理解這兩種思想的不同,這對于深刻理解計算機語言和思想有著重要的作用。C語言是現(xiàn)在最流行的面向過程的語言,在業(yè)界使用非常廣泛。而C#語言作為微軟在新一代開發(fā)平臺(.NET)上推出的、完全面向對象的語言,憑著其簡潔、高效、模板、標準化的特性,使得C#語言像程序設計語言中的一件藝術品,也吸引著越來越多的開發(fā)人員。當然,C#語言也吸收了C語言的一些東西,如語法等,所以,在有些方面,C#與C是相似的。鑒于此,編者決定編寫本書,使用C和C#語言來描述數(shù)據結構與算法?! ”緯卜譃?章,第1章介紹了數(shù)據結構和算法的基本概念及本書用到的數(shù)學知識、C語言知識和C#語言的知識;第2~6章分別討論了線性表、棧、隊列、串、數(shù)組、樹、二叉樹及圖等常用的數(shù)據結構及其應用;第7、8兩章分別討論了排序和查找常用的各種方法及其應用?! ∮捎诒緯捎肅和C#兩種語言對數(shù)據結構進行描述,為節(jié)省篇幅,本書對內容的處理如下:先對數(shù)據結構進行分析,如數(shù)據結構的概念、邏輯結構、物理結構等,然后給出每種數(shù)據結構的兩種語言描述。這樣,把重點放在了數(shù)據結構本身上,而不只是考慮其語言實現(xiàn)。這體現(xiàn)了“數(shù)據結構”課程的目的,即理解數(shù)據結構的特性,培養(yǎng)計算機的數(shù)據抽象能力和計算機思維能力?! ”緯沙啥紪|軟信息技術職業(yè)學院段恩澤、江西藍天學院肖守柏兩位老師主編,江西藍天學院蔡愛平、江西吉安市信息化工作辦公室習愛民兩位老師共同完成。其中,C語言部分,第1、2章和第3~5章分別由肖守柏、蔡愛平兩位老師編寫;第6~8章由習愛民老師編寫。C#語言部分由段恩澤老師編寫,全書由段恩澤老師統(tǒng)稿、整理。

內容概要

“數(shù)據結構”是計算機及相關專業(yè)必修的核心基礎課程。本書采用C和C#兩種語言作為算法描述的語言,對常用的數(shù)據結構與算法作了系統(tǒng)的介紹,力求概念清晰簡單,注重實際應用。本書通過兩種語言對數(shù)據結構與算法的不同描述來揭示面向過程和面向對象兩種不同的思想。全書共分為8章,依次介紹了數(shù)據結構與算法及本書用到的數(shù)學、C和C#知識、線性表、棧和隊列、串和數(shù)組、樹型結構和圖結構,以及排序和查找等基本運算?! ”緯饕嫦蚋呗毟邔T盒S嬎銠C專業(yè)的學生,也可作為非計算機專業(yè)學生的選修教材及計算機應用技術人員的自學參考書。

書籍目錄

第1章  緒論	 1.1  數(shù)據結構	  1.1.1  學習數(shù)據結構的必要性	  1.1.2  基本概念和術語	 1.2  算法	  1.2.1  算法的特性	  1.2.2  算法的評價標準	  1.2.3  算法的時間復雜度	 1.3  數(shù)學預備知識	  1.3.1  集合	  1.3.2  常用的數(shù)學術語	  1.3.3  對數(shù)	  1.3.4  遞歸	 1.4  C預備知識	  1.4.1  指針	  1.4.2  結構體	 1.5  C#預備知識	  1.5.1  接口	  1.5.2  泛型編程	 本章小結	 習題	第2章  線性表	 2.1  線性表的邏輯結構	  2.1.1  線性表的定義	  2.1.2  線性表的基本操作	 2.2  順序表	  2.2.1  順序表的定義	  2.2.2  順序表數(shù)據關系的語言描述	  2.2.3  順序表數(shù)據操作的語言描述	  2.2.4  順序表應用舉例	 2.3  單鏈表	  2.3.1  單鏈表的定義	  2.3.2  單鏈表數(shù)據關系的語言描述	  2.3.3  單鏈表數(shù)據操作的語言描述	  2.3.4  單鏈表應用舉例	 2.4  其他鏈表	  2.4.1  雙向鏈表	  2.4.2  循環(huán)鏈表	 本章小結	 習題	第3章  棧和隊列	 3.1  棧	  3.1.1  棧的定義及基本運算	  3.1.2  順序棧的存儲和運算實現(xiàn)	  3.1.3  鏈棧的存儲和運算實現(xiàn)	  3.1.4  棧的應用舉例	 3.2  隊列	  3.2.1  隊列的定義及基本運算	  3.2.2  循環(huán)順序隊列的存儲和運算實現(xiàn)	  3.2.3  鏈隊列的存儲和運算實現(xiàn)	  3.2.4  隊列的應用舉例	 本章小結	 習題	第4章  串和數(shù)組	 4.1  串	  4.1.1  串的基本概念及基本運算	  4.1.2  串存儲及基本運算實現(xiàn)	  4.1.3  串的基本操作的實現(xiàn)	  4.1.4  模式匹配	 4.2  數(shù)組	  4.2.1  數(shù)組的邏輯結構	  4.2.2  數(shù)組的內存映像	 本章小結	 習題	第5章  樹和二叉樹第6章  圖	第7章  排序第8章  查找參考文獻

章節(jié)摘錄

  在通用的計算機高級語言中,一般都有整型、實型、字符型、數(shù)組、枚舉、結構體等數(shù)據類型。數(shù)據類型可分為兩類:一類是非結構的原子類型,如整型、實型、字符型等基本類型;另一類是結構類型,它的成分可以由多個結構類型組成,并可以分解。結構類型的成分可以是非結構的,也可以是結構的。例如,數(shù)組的成分可以是整型等基本類型,也可以是數(shù)組等結構類型?! #語言的數(shù)據類型比C多。C#不僅有字符串這種基本的數(shù)據類型,還有類、委托、接口、事件等數(shù)據類型。其中原因在于兩者出現(xiàn)的背景不同。C語言是隨著UNIX操作系統(tǒng)的出現(xiàn)而流行起來的,主要用來書寫系統(tǒng)代碼,應用在底層上,速度快、效率高。然而,C語言存在一些缺陷,如類型檢查機制相對較弱、缺少支持代碼重用的語言結構等,造成用C語言開發(fā)大程序比較困難。而C#語言是Microsoft.NET Framework的首選語言,在Intemet的大環(huán)境下出現(xiàn)的,為了編寫面向網絡的應用。所以,C#語言的抽象程度更高,應用范圍更廣,能夠開發(fā)大程序,因此,C#語言的數(shù)據類型的種類更多。  5.抽象數(shù)據類型  抽象數(shù)據類型(Abstract Data Type,ADT)是指一些數(shù)據以及對這些數(shù)據所進行的操作的集合。數(shù)據之間有一定的關系,不同的抽象數(shù)據類型的數(shù)據之間的關系不同。對數(shù)據進行的操作由數(shù)據間的關系決定。數(shù)據問的關系不同,對數(shù)據的操作也就不同。這些操作既向程序的其余部分描述了這些數(shù)據是怎么樣的,也允許程序的其余部分改變這些數(shù)據。一個ADT可能是一個圖形窗體以及所有能影響到該窗體的操作,也可以是一個文件以及對這個文件進行的操作,或者是一張保險費率表及相關操作等?! 鹘y(tǒng)的教科書在講到抽象數(shù)據類型時,總會用一些數(shù)學中的概念進行描述。典型的描述是:“你可以把抽象數(shù)據類型想成一個定義有一組操作的數(shù)學模型?!边@種描述給人的感覺好像你從不會真正用到抽象數(shù)據類型似的——除非拿它來催眠?! “殉橄髷?shù)據類型解釋得這么空洞是完全丟了重點。抽象數(shù)據類型可以讓你像在現(xiàn)實世界中一樣操作實體,而不必在底層的實現(xiàn)上擺弄實體,如不用再向鏈表中插入一個結點了,而是可以在電子表格中添加一個數(shù)據單元,或向一組窗體類型中添加一個新類型,或給火車模型加掛一節(jié)車廂。也就是說,抽象數(shù)據類型使你可以在問題域中思考問題,而不管底層是如何實現(xiàn)的。這就是“抽象數(shù)據類型”概念中“抽象”的含義。也就是說,它把底層的信息隱藏起來,修改底層信息不會影響該抽象數(shù)據類型的使用,因為它提供的公有操作沒有改變。并且,如果數(shù)據類型發(fā)生改變,也只需在一處修改而不會影響到整個程序。

編輯推薦

  《數(shù)據結構(C/C#語言版)》特色:通過C/C#對數(shù)據結構與算法的描述來揭示面向過程和面向對象的思想  理解數(shù)據結構特性,培養(yǎng)計算機數(shù)據抽象能力和計算機思維能力

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    數(shù)據結構 PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網 手機版

京ICP備13047387號-7