出版時(shí)間:2007-5 出版社:清華大學(xué)出版社 作者:普里查德 頁數(shù):700
Tag標(biāo)簽:無
前言
本書是《數(shù)據(jù)抽象和問題求解—— Java語言描述》的第2版,相信本書會(huì)使您的教學(xué)或者學(xué)習(xí)大受裨益。Java目前已經(jīng)成為計(jì)算機(jī)科學(xué)課程的主要語言之一,也非常適合以面向?qū)ο蟮姆绞街v解數(shù)據(jù)抽象原理。本書基于Paul Helman和Robert Veroff合著的Intermediate Problem Solving and Data Structures:Walls and Mirrors(Benjamin/Cummings公司,1986年),繼承了原著的組織方式和理念,包括技術(shù)要點(diǎn)與正文內(nèi)容、示例、圖和練習(xí)題。Paul Helman和Robert Veroff教授把數(shù)據(jù)抽象和問題求解比喻為墻和鏡子,并提出多種有利于教學(xué)的理念。本書重點(diǎn)介紹數(shù)據(jù)抽象和其他主流的問題求解工具,非常適合作為計(jì)算機(jī)科學(xué)中級(jí)課程的教材??紤]到計(jì)算機(jī)科學(xué)的動(dòng)態(tài)性和多樣性,本書涵蓋各種主題,以求適用于不同課程的教學(xué)要求。例如,可將本書用作數(shù)據(jù)結(jié)構(gòu)入門級(jí)教材,也可用作高級(jí)程序設(shè)計(jì)和問題求解方面的教材。本書旨在使學(xué)生切實(shí)了解和掌握數(shù)據(jù)抽象、面向?qū)ο缶幊毯推渌呒?jí)問題求解技術(shù)。第2版中的新增內(nèi)容基于Java 5:第2版進(jìn)行了全面修訂,以兼容Java的最新版本Java 5。書中的所有代碼都修改為Java 5兼容版本。泛型是Java 5的重要部分,第9章將對(duì)它進(jìn)行深入的講解,并在后續(xù)章節(jié)中應(yīng)用。更多面向?qū)ο蟮腏ava知識(shí):本書還增加了大量面向?qū)ο蟮腏ava語言知識(shí),幫助學(xué)生從Java入門課程轉(zhuǎn)向本課程。第1章概述了Java的重要概念,其中包括Java 5的新特性,例如Scanner類和自動(dòng)裝箱(autoboxing)。第9章重點(diǎn)介紹了Java的高級(jí)主題。UML介紹:添加了UML(Unified Modeling Language,統(tǒng)一建模語言)的簡要介紹,而且書中的所有偽代碼都更新為使用UML。使用Java集合框架:對(duì)Java集合框架(Java Collections Framework,JCF)的討論貫穿全書,還新增了一些介紹JCF類的章節(jié),提供了一些使用JCF類的示例。其他擴(kuò)充內(nèi)容:其他的修訂旨在提高整本書的可用性和可讀性,包括一些新的練習(xí)和設(shè)計(jì)。致學(xué)生已經(jīng)有成千上萬的學(xué)生了解了“墻”和“鏡子”的概念?!皦Α焙汀扮R子”代表兩種貫穿全書的基本問題求解技術(shù)?!皵?shù)據(jù)抽象”技術(shù)將模塊的實(shí)現(xiàn)細(xì)節(jié)與程序的其余部分隔離開,就像一堵將您和鄰居隔開的墻。“遞歸”是重復(fù)技術(shù),通過解決同類型的小問題來解決問題,就像鏡像一樣,每次反射都會(huì)逐漸變小。本書在編寫時(shí)充分考慮了學(xué)生的需求。作者一直在從事教學(xué)工作,很明白清晰表述的重要性。本書在風(fēng)格上力求明晰精練,通俗易懂。為了幫助學(xué)生學(xué)習(xí)本書,并通過練習(xí)進(jìn)行復(fù)習(xí),各章添加了小結(jié)、自我測試題及練習(xí)題,附錄部分提供了自我測試題的答案和一個(gè)術(shù)語表。本書的第1章提供了Java參考資料。后面“本書概覽”一節(jié)還列出了本書的主要特性。第1章在章節(jié)概述中對(duì)學(xué)生掌握J(rèn)ava知識(shí)的情況作了幾個(gè)基本的假定。有的學(xué)生可能是首次接觸Java,或者需要對(duì)以前所學(xué)的Java知識(shí)進(jìn)行全面回顧;而一些學(xué)生可能已經(jīng)掌握了第1章中介紹的大部分編程知識(shí)。不管您屬于哪一類,都需要知道if和switch分支結(jié)構(gòu),for、while和do迭代語句,類、方法、參數(shù),數(shù)組,字符串和文件等。除了第1章中介紹的內(nèi)容外,第9章還討論了Java的一些高級(jí)主題,例如泛型和迭代器。本書還假定學(xué)生不具備使用遞歸方法的經(jīng)驗(yàn),所以在第3章和第6章中將講述這方面的內(nèi)容。本書的所有Java源代碼學(xué)生都可以使用。后面的“輔助資料”一節(jié)中將說明如何獲取這些文件。致教師本書使用Java 5來描述數(shù)據(jù)抽象原理和數(shù)據(jù)結(jié)構(gòu)。我們根據(jù)Java語言的優(yōu)缺點(diǎn),采用針對(duì)性的教學(xué)方法,力求做到實(shí)用、明確和透徹。先決條件本書要求學(xué)生了解Java的基礎(chǔ)知識(shí),或者了解另外一種高級(jí)語言,并有教師幫助他過渡到使用Java語言。對(duì)于沒有Java語言背景的學(xué)生,可以通過第1章快速掌握其基本知識(shí),為后面的學(xué)習(xí)打好基礎(chǔ)。另外,本書還討論了Java類,包括類的各種基本概念,諸如繼承、多態(tài)性、接口和包。但本書只介紹這些與實(shí)現(xiàn)抽象數(shù)據(jù)類型(ADT)有關(guān)的內(nèi)容,重點(diǎn)仍是ADT,而非Java。本書在基于對(duì)象的編程環(huán)境中介紹數(shù)據(jù)抽象,要求學(xué)生掌握面向?qū)ο笤O(shè)計(jì)和軟件工程知識(shí)。這樣,后面就會(huì)將注意力集中在數(shù)據(jù)抽象上。當(dāng)然,我們還介紹了UML這種設(shè)計(jì)工具。
內(nèi)容概要
本書全面系統(tǒng)地講述了如何利用Java語言解決實(shí)際問題,重點(diǎn)剖析了數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)抽象的核心概念,并通過大量示例向讀者展示了面向?qū)ο蟪绦蛟O(shè)計(jì)理念的精髓。本書在第1版的基礎(chǔ)上完善了所有的Java代碼,使用UML處理了所有偽代碼,通過準(zhǔn)確的概念講解、貼切的示例和范圍廣泛的問題討論,使老師和學(xué)生的教與學(xué)都變得輕松自如。本書能夠使讀者系統(tǒng)地掌握問題求解技術(shù)和相關(guān)的編程技能,為日后的軟件開發(fā)工作打下堅(jiān)實(shí)的基礎(chǔ)。 本書表述嚴(yán)謹(jǐn)、推理縝密,適合作為計(jì)算機(jī)及相關(guān)專業(yè)本科學(xué)生的教材,也是一本技術(shù)含量很高的專業(yè)參考書。
作者簡介
Frank M.Carrano,Syracuse大學(xué)博士畢業(yè),現(xiàn)任Rhode Island大學(xué)計(jì)算機(jī)科學(xué)系教授。主要研究方向?yàn)閿?shù)據(jù)抽象技術(shù)、教育軟件及多媒體技術(shù)。曾編寫多本計(jì)算機(jī)書籍,如Problem Solving and Data Abtraction with C++:Walls and Mirrors,Intermediate Problem Solving and Data Structures:Walls and Mirrors等。
書籍目錄
第Ⅰ部分 問題求解技術(shù) 第1章 Java編程基礎(chǔ) 1.1 程序結(jié)構(gòu) 1.2 Java基礎(chǔ)知識(shí) 1.3 分支結(jié)構(gòu) 1.4 循環(huán)結(jié)構(gòu) 1.5 有用的Java類 1.6 Java異常 1.7 文本輸入和輸出 1.8 文件輸入和輸出 1.9 小結(jié) 1.10 提示 第2章 編程原理與軟件工程 2.1 問題求解與軟件工程 2.2 面向?qū)ο笤O(shè)計(jì) 2.3 關(guān)鍵編程問題 2.4 小結(jié) 2.5 提示 2.6 自我測試題 2.7 練習(xí)題 2.8 編程問題 第3章 遞歸:鏡子 3.1 遞歸解決方案 3.2 計(jì)數(shù) 3.3 數(shù)組查找 3.4 組織數(shù)據(jù) 3.5 遞歸與效率 3.6 小結(jié) 3.7 提示 3.8 自我測試題 3.9 練習(xí)題 3.10 編程問題 第4章 數(shù)據(jù)抽象:墻 4.1 抽象數(shù)據(jù)類型 4.2 指定ADT 4.3 實(shí)現(xiàn)ADT 4.4 小結(jié) 4.5 提示 4.6 自我測試題 4.7 練習(xí)題 4.8 編程問題 第5章 鏈表 5.1 預(yù)備知識(shí) 5.2 鏈表編程 5.3 鏈表的各種變體 5.4 清單應(yīng)用程序 5.5 Java集合框架 5.6 小結(jié) 5.7 提示 5.8 自我測試題 5.9 練習(xí)題 5.10 編程問題 第Ⅱ部分 使用抽象數(shù)據(jù)類型解決問題 第6章 遞歸問題求解技術(shù) 6.1 回溯 6.2 定義語言 6.3 遞歸和數(shù)學(xué)歸納法的關(guān)系 6.4 小結(jié) 6.5 提示 6.6 自我測試題 6.7 練習(xí)題 6.8 編程問題 第7章 棧 7.1 ADT棧 7.2 ADT棧的簡單應(yīng)用 7.3 ADT棧的實(shí)現(xiàn) 7.4 應(yīng)用:代數(shù)表達(dá)式 7.5 應(yīng)用:查找問題 7.6 棧和遞歸的關(guān)系 7.7 小結(jié) 7.8 提示 7.9 自我測試題 7.10 練習(xí)題 7.11 編程問題 第8章 隊(duì)列 8.1 ADT隊(duì)列 8.2 ADT隊(duì)列的簡單應(yīng)用 8.3 實(shí)現(xiàn)ADT隊(duì)列 8.4 基于位置的ADT總覽 8.5 模擬應(yīng)用 8.6 小結(jié) 8.7 提示 8.8 自我測試題 8.9 練習(xí)題 8.10 編程問題 第9章 高級(jí)Java主題 9.1 繼承 9.2 動(dòng)態(tài)綁定和抽象類 9.3 ADT列表和有序表 9.4 Java泛型 9.5 迭代器 9.6 小結(jié) 9.7 提示 9.8 自我測試題 9.9 練習(xí)題 9.10 編程問題 第10章 算法的效率和排序 10.1 確定算法的效率 10.2 排序算法及其效率 10.3 小結(jié) 10.4 提示 10.5 自我測試題 10.6 練習(xí)題 10.7 編程問題 第11章 樹 11.1 術(shù)語 11.2 ADT二叉樹 11.3 ADT二叉查找樹 11.4 一般樹 11.5 小結(jié) 11.6 提示 11.7 自我測試題 11.8 練習(xí)題 11.9 編程問題 第12章 表和優(yōu)先隊(duì)列 12.1 ADT表 12.2 ADT優(yōu)先隊(duì)列: ADT表的變體 12.3 JCF中的表和優(yōu)先隊(duì)列 12.4 小結(jié) 12.5 提示 12.6 自我測試題 12.7 練習(xí)題 12.8 編程問題 第13章 表的高級(jí)實(shí)現(xiàn)方案 13.1 平衡查找樹 13.2 散列 13.3 按多種形式組織數(shù)據(jù) 13.4 小結(jié) 13.5 提示 13.6 自我測試題 13.7 練習(xí)題 13.8 編程問題 第14章 圖 14.1 術(shù)語 14.2 將圖作為ADT 14.3 圖的遍歷 14.4 圖的應(yīng)用 14.5 小結(jié) 14.6 提示 14.7 自我測試題 14.8 練習(xí)題 14.9 編程問題 第15章 外部方法 15.1 了解外部存儲(chǔ) 15.2 排序外部文件的數(shù)據(jù) 15.3 外部表 15.4 小結(jié) 15.5 提示 15.6 自我測試題 15.7 練習(xí)題 15.8 編程練習(xí)附錄A Java與C++的區(qū)別 附錄B Unicode字符代碼附錄C Java資源附錄D 數(shù)學(xué)歸納法附錄E Java操作符附錄F 術(shù)語表 附錄G 自我測試題答案
章節(jié)摘錄
插圖:
編輯推薦
《數(shù)據(jù)抽象和問題求解-Java語言描述》重要特色:涵蓋Java 5的高級(jí)主題,例如泛型、迭代器、Java集合框架。通過大量救命演示類和抽象數(shù)據(jù)類型(ADF)在問題求解過程中的作用。精心設(shè)置“自我測試題”、“練習(xí)題”、“編程問題”等環(huán)節(jié),以利于課堂教學(xué)。知識(shí)點(diǎn)全面,語言通俗易懂,可同時(shí)滿足初、中級(jí)讀者的學(xué)習(xí)要求?!稊?shù)據(jù)抽象和問題求解-Java語言描述》在介紹如何開發(fā)面向?qū)ο蟪绦虻耐瑫r(shí),不治之癥豐重講解了標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)。作者首先介紹了Java中需要特別掌握的部分,然后討論了程序設(shè)計(jì)中類、繼承、多態(tài)性、遞歸和復(fù)雜度分析等概念。最后一章介紹了線程和同步技術(shù),為學(xué)生轉(zhuǎn)向計(jì)算機(jī)科學(xué)的高級(jí)課程作了鋪墊。另外,作者還采用大量的案例分析貫穿《數(shù)據(jù)抽象和問題求解-Java語言描述》始終,突出了軟件的生命周期?!稊?shù)據(jù)抽象和問題求解-Java語言描述》這本暢銷的經(jīng)典教材經(jīng)過本次修訂后,囊括了C++編程語言的許多最新轉(zhuǎn)性。除闡述了數(shù)據(jù)抽象的所有基礎(chǔ)知識(shí)外,還強(qiáng)調(diào)了規(guī)范和實(shí)現(xiàn)之間的區(qū)別,而這種區(qū)別正是面向?qū)ο蠓绞降幕A(chǔ)。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載