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