數(shù)據(jù)結(jié)構(gòu)

出版時(shí)間:2004-5  出版社:清華大學(xué)出版社  作者:馬里克 (Malik.D.S)  頁(yè)數(shù):676  字?jǐn)?shù):1113000  譯者:楊浩  
Tag標(biāo)簽:無(wú)  

前言

本書(shū)假定讀者熟知Java的基礎(chǔ)元素知識(shí),如數(shù)據(jù)類(lèi)型、控制結(jié)構(gòu)、功能函數(shù)與參數(shù)、配置數(shù)組等。但是如果讀者你需要復(fù)習(xí)這些概念,或者將C++為作為第一編程語(yǔ)言,可以在附錄F中找到相關(guān)的內(nèi)容。如果需要更詳細(xì)地了解附錄F中的主題,請(qǐng)參考《Java基礎(chǔ)教程——從問(wèn)題分析到程序設(shè)計(jì)》一節(jié)以及附錄G中列出的參考文獻(xiàn)。另外,本書(shū)還要求讀者具備一定的數(shù)學(xué)基礎(chǔ),如高等數(shù)學(xué)。本書(shū)主要內(nèi)容作為計(jì)算機(jī)科學(xué)專(zhuān)業(yè)的基礎(chǔ)課程,本書(shū)把重點(diǎn)放在數(shù)據(jù)結(jié)構(gòu)和面向?qū)ο笤O(shè)計(jì)(object-orienteddesign,OOD)上。書(shū)中提供的編程示例有效地使用了面向?qū)ο笤O(shè)計(jì)技術(shù),通過(guò)以解決并編寫(xiě)程序解決一特定的問(wèn)題。第一1章介紹了軟件引擎工程原則理。這一章首先描述了軟件的生命周期,然后討論了算法分析的重要性,并介紹了算法分析中使用的大O表示法。面向?qū)ο笤O(shè)計(jì)技術(shù)有3個(gè)基本原則:封裝性、繼承性和多態(tài)性。Java的封裝通過(guò)類(lèi)來(lái)的使用而實(shí)現(xiàn)封裝性。第一1章的下后半部分討論了用戶(hù)定義的類(lèi)。如果讀者你熟悉如何創(chuàng)建并使用你自己的類(lèi),你可能略可以略過(guò)這部分內(nèi)容。這一章還討論了解決特定問(wèn)題的基本面向?qū)ο笤O(shè)計(jì)技術(shù)。第2二章繼續(xù)討論前一章對(duì)面向?qū)ο笤O(shè)計(jì)原則的討論,介紹了了繼承性和異常處理,并解釋如何通過(guò)繼承性原則來(lái)擴(kuò)展類(lèi)的定義。在執(zhí)行Java程序時(shí),可能會(huì)發(fā)生一些錯(cuò)誤。例如,不小心進(jìn)行了除0操作,標(biāo)記不存在的字符串,數(shù)組的索引超出了邊界;這些類(lèi)型的錯(cuò)誤在Java中稱(chēng)為異常。Java對(duì)程序異常的處理提供了強(qiáng)大的支持。本章除了說(shuō)明如何使用已有的Java異常類(lèi)之外,還闡述了如何構(gòu)建自己的異常類(lèi)。第3三章討論如何在數(shù)組中組織和處理數(shù)據(jù)。本章除了解釋如何開(kāi)發(fā)自己的代碼之外,還演示了Java類(lèi)Vector的工作原理。第4五章討論了鏈列表。這一首先解釋了鏈列表的基本屬性,如數(shù)據(jù)的插入和刪除,鏈列表的創(chuàng)建等。接著然后,這一章開(kāi)發(fā)了一段通用代碼,來(lái)處理在單向鏈列表中處理的數(shù)據(jù)。這一章還討論了雙重鏈列表,帶有頭跟蹤器尾節(jié)點(diǎn)的鏈列表,和以及循環(huán)的鏈列表。第5六章介紹了遞歸,并用大量的示例顯演示了如何使以用遞歸的方式來(lái)解決問(wèn)題,同時(shí)還考慮了遞歸的術(shù)語(yǔ)。第6七章和第7八章討論了堆棧和隊(duì)列。除了演示顯示了如何開(kāi)發(fā)自己的通用代碼來(lái)來(lái)實(shí)現(xiàn)堆棧和隊(duì)列外,還解釋了Java類(lèi)Stack的工作原理,以及堆棧和隊(duì)列的應(yīng)用。第8九章描述了搜索算法。,在分析順序的搜索算法之后,又討論了二元叉樹(shù)搜索算法,并對(duì)這種算法進(jìn)行了簡(jiǎn)要的分析。在初步探討基于比較的搜索算法之后,本章還討論了散列算法。第9章十介紹了將算法進(jìn)行分類(lèi),例如排序算法,如選擇分類(lèi)排序、插入分類(lèi)排序、快速分類(lèi)排序、合并分類(lèi)排序和堆分類(lèi)排序。第10十一章討論了二元叉樹(shù)。第十二11章介紹了圖和表圖表的算法,如最短路徑,最小生成樹(shù),和拓?fù)浞诸?lèi)排序。附錄A列出了Java中的保留字。附錄B顯示列出了Java運(yùn)算符的優(yōu)先級(jí)權(quán)和關(guān)聯(lián)性。附錄C列出了ASCII(AmericanStandardCodeforInformationInterchange,美國(guó)信息交換標(biāo)準(zhǔn)碼)和EBCDIC(可擴(kuò)充二進(jìn)制代碼的十進(jìn)制交換碼)的性能字符集。附錄D介紹了用戶(hù)定義的類(lèi)在Java程序中的使用方法。附錄E描述了本書(shū)中使用的Java類(lèi)。附錄F回顧了Java的基本要點(diǎn),并比較了Java和C++語(yǔ)言的基本概念,如數(shù)據(jù)類(lèi)型,控制結(jié)構(gòu),功能參數(shù)函數(shù)和參數(shù)和以及數(shù)組。所以,如果你以第一編程語(yǔ)言是C++為第一編程語(yǔ)言,就可以通過(guò)附錄F使你掌握這些Java的基本要點(diǎn)。附錄G為進(jìn)一步學(xué)習(xí)Java知識(shí)和附錄F中沒(méi)有提到的主題提供了一些了一個(gè)引用表參考文獻(xiàn)主題。附錄H提供書(shū)文中精選部分練習(xí)題的答案。

內(nèi)容概要

本書(shū)是計(jì)算機(jī)科學(xué)專(zhuān)業(yè)的權(quán)威教程。書(shū)中通過(guò)大量簡(jiǎn)明清晰的說(shuō)明和示例,運(yùn)用Java成功地描述了各種算法。內(nèi)容涉及到數(shù)據(jù)結(jié)構(gòu)課程的所有知識(shí)點(diǎn),包括結(jié)構(gòu)化模板庫(kù)、二叉樹(shù)、圖的算法,以及搜索和排序等。
本書(shū)結(jié)構(gòu)特色:
·編程示例——每一章的最后都包含多個(gè)完整的示例程序,這些示例不僅給出了詳細(xì)的輸入、輸出、問(wèn)題分析和算法設(shè)計(jì),還提供了完整的程序清單。
·快速回顧——這部分總結(jié)了每章提出的所有概念。
·練習(xí)題——測(cè)試學(xué)生判斷各個(gè)聲明和語(yǔ)句是否正確的能力。
·編程練習(xí)——學(xué)生可以按照指定的要求編寫(xiě)Java程序。
·注意——強(qiáng)調(diào)與各個(gè)概念相關(guān)的重要內(nèi)容。
·帶編號(hào)的示例——通過(guò)相關(guān)代碼說(shuō)明各種編程思想。

作者簡(jiǎn)介

D.S.Malik是Creighton大學(xué)的數(shù)學(xué)和計(jì)算機(jī)科學(xué)系教授,他于1985年在Creighton大學(xué)獲得博士學(xué)位后,就一直在該大學(xué)從事計(jì)算機(jī)教學(xué)工作。目前,他已經(jīng)表了45篇論文,出版了6本著作,涉及抽象代數(shù)、模糊自控理論和語(yǔ)言、模糊邏輯及其應(yīng)用、信息科學(xué)等領(lǐng)域。

書(shū)籍目錄

第1章 軟件工程基本原理和Java類(lèi) 1.1 軟件的生命周期 1.2 軟件開(kāi)發(fā)階段 1.3 算法分析:大O表示法 1.4 用戶(hù)定義的類(lèi)  1.5 抽象數(shù)據(jù)類(lèi)型 1.6 編程示例:糖果機(jī) 1.7 標(biāo)識(shí)類(lèi)、對(duì)象和操作 1.8 快速總結(jié) 1.9 練習(xí)題 1.10 編程練習(xí)第2章 繼承和異常處理 2.1 繼承 2.2 抽象方法和抽象類(lèi) 2.3 聚合 2.4 異常處理 2.5 編程示例:成績(jī)報(bào)告單 2.6 快速總結(jié) 2.7 練習(xí)題 2.8 編程練習(xí)第3章 基于數(shù)組的表 3.1 表元素的類(lèi)型 3.2 類(lèi)ArrayListClass 3.3 無(wú)序表 3.4 類(lèi)Vector 3.5 編程示例:多項(xiàng)式的運(yùn)算 3.6 快速回顧 3.7 練習(xí)題 3.8 編程練習(xí)第4章 鏈表 4.1 鏈表 4.2 鏈表元素的插入和刪除 4.3 構(gòu)建鏈表 4.4 ADT鏈表 4.5 無(wú)序鏈表 4.6 有序鏈表 4.7 雙向鏈表 4.8 帶有頭節(jié)點(diǎn)和尾節(jié)點(diǎn)的鏈表 4.9 循環(huán)鏈表 4.10 編程示例:音像店 4.11 快速回顧 4.12 練習(xí)題 4.13 編程練習(xí)第5章 遞歸 5.1 遞歸的定義 5.2 使用遞歸法解決問(wèn)題 5.3 編程示例:將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù) 5.4 編程示例:Sierpinski gasket 5.5 使用遞歸還是迭代 5.6 遞歸和回溯:8-皇后問(wèn)題 5.7 快速回顧 5.8 練習(xí)題 5.9 編程練習(xí)第6章 堆棧 6.1 堆棧 6.2 StackException類(lèi) 6.3 使用數(shù)組實(shí)現(xiàn)堆棧 6.4 編程示例:求最高GPA 6.5 把堆棧實(shí)現(xiàn)為鏈表 6.6 由類(lèi)LinkedListClass派生而來(lái)的堆棧 6.7 堆棧的應(yīng)用:后綴表達(dá)式計(jì)算器 6.8 后綴表達(dá)式計(jì)算器:圖形用戶(hù)界面(GUI) 6.9 消除遞歸:反向打印鏈表的非遞歸算法 6.10 類(lèi)Stack 6.11 快速回顧 6.12 練習(xí)題 6.13 編程練習(xí)第7章 隊(duì)列 7.1 隊(duì)列 7.2 隊(duì)列的異常類(lèi) 7.3 隊(duì)列的數(shù)組實(shí)現(xiàn) 7.4 隊(duì)列的鏈表實(shí)現(xiàn) 7.5 從類(lèi)LinkedListClass派生而來(lái)的隊(duì)列 7.6 優(yōu)先隊(duì)列 7.7 隊(duì)列的應(yīng)用:模擬 7.8 快速回顧 7.9 練習(xí)題 7.10 編程練習(xí)第8章 搜索算法 8.1 搜索算法 8.2 基于比較的搜索算法的下限 8.3 散列算法 8.4 快速回顧 8.5 練習(xí)題 8.6 編程練習(xí)第9章 排序算法 9.1 排序算法 9.2 選擇排序: 基于數(shù)組的表 9.3 插入排序: 基于數(shù)組的表 9.4 插入排序: 基于鏈表的表 9.5 基于比較的排序算法的下限 9.6 快速排序:基于數(shù)組的表 9.7 歸并排序: 基于鏈表的表 9.8 堆排序: 基于數(shù)組的表 9.9 再論優(yōu)先級(jí)隊(duì)列 9.10 編程示例:選舉結(jié)果 9.11 快速回顧 9.12 練習(xí)題 9.13 編程練習(xí)第10章 二叉樹(shù) 10.1 二叉樹(shù) 10.2 二叉樹(shù)的遍歷 10.3 二叉搜索樹(shù) 10.4 二叉搜索樹(shù)分析 10.5 二叉樹(shù)的非遞歸遍歷算法 10.6 AVL(平衡)樹(shù) 10.7 編程示例:音像店 10.8 快速回顧 10.9 練習(xí)題 10.10 編程練習(xí)第11章 圖 11.1 圖的簡(jiǎn)史 11.2 圖的定義和符號(hào) 11.3 圖的表示方法 11.4 圖的操作 11.5 圖的ADT定義 11.6 圖的遍歷 11.7 最短路徑算法 11.8 最小生成樹(shù) 11.9 拓?fù)渑判?11.10 快速回顧 11.11 練習(xí)題 11.12 編程練習(xí)附錄A 保留字附錄B 運(yùn)算符優(yōu)先級(jí)附錄C 字符集附錄D 包和用戶(hù)定義的類(lèi)附錄E Java類(lèi)附錄F 針對(duì)C++程序員的JAVA介紹附錄G 參考文獻(xiàn)附錄H 部分習(xí)題答案

章節(jié)摘錄

插圖:

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    數(shù)據(jù)結(jié)構(gòu) PDF格式下載


用戶(hù)評(píng)論 (總計(jì)3條)

 
 

  •   這本書(shū)不錯(cuò),是國(guó)外計(jì)算機(jī)專(zhuān)業(yè)經(jīng)典教材,買(mǎi)了不只是為了學(xué)習(xí),還是為了收藏做參考書(shū)。
  •   發(fā)貨挺快,書(shū)也挺好
  •   書(shū)內(nèi)容一般吧,我覺(jué)得數(shù)據(jù)結(jié)構(gòu)java版的不是很好。
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7