登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

『簡體書』数据结构与抽象(Java版)(第三版)

書城自編碼: 2912182
分類: 簡體書→大陸圖書→教材研究生/本科/专科教材
作者: [美]Frank M. Carrano[F. M. 卡拉诺]
國際書號(ISBN): 9787121276163
出版社: 电子工业出版社
出版日期: 2016-10-01
版次: 3 印次: 1
頁數/字數: 632/1122000
書度/開本: 16开 釘裝: 平装

售價:NT$ 668

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
棺材船:爱尔兰大饥荒时期海上的生与死
《 棺材船:爱尔兰大饥荒时期海上的生与死 》

售價:NT$ 484.0
新左派政治经济学:一个局外人的看法(汉译名著本14)
《 新左派政治经济学:一个局外人的看法(汉译名著本14) 》

售價:NT$ 157.0
汗青堂丛书006·十二幅地图中的世界史(2024版)
《 汗青堂丛书006·十二幅地图中的世界史(2024版) 》

售價:NT$ 661.0
英国人:国家的形成,1707-1837年(英国史前沿译丛)
《 英国人:国家的形成,1707-1837年(英国史前沿译丛) 》

售價:NT$ 829.0
人物与视角:小说创作的要素(创意写作书系)
《 人物与视角:小说创作的要素(创意写作书系) 》

售價:NT$ 330.0
海上帝国-现代航运世界的故事
《 海上帝国-现代航运世界的故事 》

售價:NT$ 549.0
狞厉与肃穆 :中国古代青铜器的纹样
《 狞厉与肃穆 :中国古代青铜器的纹样 》

售價:NT$ 1221.0
古代中医养生典籍精选
《 古代中医养生典籍精选 》

售價:NT$ 946.0

編輯推薦:
本书在编写过程中特别考虑到了面向对象程序设计OOP的思想与Java语言的特性。它不是从基于另一种程序设计语言的数据结构教材简单地"改编"而来的,因此在数据结构的实现上更加"地道"地运用了Java语言,并且自始至终强调以面向对象的方式来思考、分析和解决问题。
內容簡介:
本书是为数据结构入门课程而编写的教材。作者Frank Carrano在编写过程自始至终特别考虑到了Java与对象,为教师和学生提供了一种精心设计并经过教学实验的方式借助Java讲授ADT和对象。本书独特的设计将内容组织为相对较短的章。这种方式使学习更容易,并留出了教学的机动性。本书教给学生如何使用线性表、词典、栈、队列等等来组织数据。利用这些数据组织方式,学生们将学到算法设计的相关技术。
關於作者:
Frank M.Carrano是美国罗得岛大学计算机科学系的荣誉退休教授,于1969年获得美国锡拉丘兹大学计算机科学专业博士学位。他的兴趣包括数据结构、计算机科学教育、社会问题的计算处理和数值计算。Carrano教授对计算机科学高年级本科课程的设计和交付特别感兴趣,曾撰写了多本著名的计算机科学专业的本科教材。
张引,浙江大学计算机科学与技术学院副教授,1999年于浙江大学计算机系取得计算机应用博士学位并留校工作至今。主要研究领域为图形图像、模式识别、数据分析与挖掘、知识表达与发现。
目錄
目录
第1章袋子
袋子
袋子的行为
袋子的规格说明
接口
ADT袋子的使用
像使用自动售货机一样使用ADT
Java类库: 接口Set
第2章使用数组实现袋子
使用固定大小的数组实现ADT袋子
一个类比
一组核心方法
核心方法的实现
核心方法的测试
更多方法的实现
删除物品的方法
使用可变大小的数组实现ADT袋子
调整数组的大小
袋子的一种新的实现
使用数组实现ADT袋子的优缺点
第3章使用链表实现袋子
链表
通过添加节点到表头来创建链表
ADT袋子的链表实现
私有的类Node
类LinkedBag的概要
一些核心方法的定义
核心方法的测试
方法getFrequencyOf
方法contains
从链表中删除物品
方法remove和clear
具有方法set和get的类Node
使用链表实现ADT袋子的优缺点
第4章算法的效率
动机
算法效率的度量
基本操作次数的统计
最好、 最坏和平均情况
大O表示法
程序结构的复杂度
效率的图形化表示
ADT袋子不同实现的效率
基于数组的实现
基于链表的实现
两种实现方法的比较
第5章栈
ADT栈的规格说明
利用栈处理代数表达式
应用问题: 中缀代数表达式中括号平衡的
检查
应用问题: 中缀表达式向后缀表达式的
转换
应用问题: 后缀表达式的求值
应用问题: 中缀表达式的求值
程序栈
Java类库: 类Stack
第6章栈的实现
基于链表的实现
基于数组的实现
基于向量的实现
Java类库: Vector类
使用向量实现ADT栈
第7章递归
什么是递归
跟踪一个递归方法
有返回值的递归方法
递归地处理一个数组
递归地处理一个链表
递归方法的时间效率
countDown的时间效率
计算xn的时间效率
一个复杂问题的简单解决方案
一个简单问题的拙劣解决方案
尾递归
间接递归
使用栈代替递归
第8章排序引论
组织Java对数组排序的方法
选择排序
迭代选择排序
递归选择排序
选择排序的效率
插入排序
迭代插入排序
递归插入排序
插入排序的效率
链表的插入排序
希尔排序
Java代码
希尔排序的效率
算法比较
第9章快速排序方法
归并排序
数组的归并
递归的归并排序
归并排序的效率
迭代的归并排序
Java类库中的归并排序
快速排序
快速排序的效率
创建划分
快速排序的Java代码
Java类库中的快速排序
基数排序
基数排序的伪代码
基数排序的效率
算法比较
第10章队列、 双端队列和优先队列
ADT队列
解决问题: 模拟排队
解决问题: 计算出售股票时的资本
增益(一)
Java类库: 接口Queue
ADT双端队列
解决问题: 计算出售股票时的资本
增益(二)
Java类库: 接口Deque
Java类库: ArrayDeque类
ADT优先队列
解决问题: 跟踪你的作业
Java类库: 类PriorityQueue
第11章队列、 双端队列和优先队列的
实现
基于链表队列的实现
基于数组队列的实现
循环数组
有一个未使用存储单元的循环数组
基于向量队列的实现
基于循环链表队列的实现
由两部分构成的循环链表
Java类库: 类AbstractQueue
基于双向链表双端队列的实现
实现优先队列的可用方法
第12章线性表
ADT线性表的规格说明
使用ADT线性表
Java类库: List接口
Jave类库: ArraryList类
第13章用数组实现线性表
用数组实现ADT线性表
一个类比
Java实现
用数组实现ADT线性表的效率
用Vector实现ADT线性表
第14章用链表实现线性表
操作链表节点
在多种位置加入节点
在多种位置删除节点
私有方法getNodeAt
开始实现
数据域和构造函数
在列表结尾加入
在列表给定位置加入
方法isEmpty和toArray
测试核心方法
继续实现
一个更好的实现
尾引用
用链表实现ADT列表的效率
Java类库: 类LinkedList
第15章迭代器
迭代器是什么
Iterator接口
使用Iterator接口
独立类迭代器
内部类迭代器
基于链表实现
基于数组实现
为什么迭代器方法在它们自己的
类中
ListIterator接口
使用ListIterator接口
ListIterator接口基于数组的实现
内部类
Java类库: Iterable接口
Iterable和for-each循环
修改版接口List
第16章有序表
ADT有序表的规格说明
使用ADT有序表
链表实现
方法add
链表实现的效率
使用ADT线性表的实现
效率问题
第17章继承及线性表
使用继承实现有序表
设计一个基类
创建一个抽象基类
有序表的一种高效实现
方法add
第18章查找
问题引入
查找无序数组
无序数组的迭代式顺序查找
无序数组的递归式顺序查找
顺序查找数组的效率
查找有序数组
有序数组的顺序查找
有序数组的二分查找
Java类库: 方法binarySearch
二分查找数组的效率
查找无序链表
无序链表的迭代式顺序查找
无序链表的递归式顺序查找
顺序查找链表的效率
查找有序链表
有序链表的顺序查找
二分查找有序链表
查找方法的选择
第19章词典
ADT词典规格说明
Java接口
迭代器
使用ADT词典
问题解决: 电话号码本
问题解决: 词频
问题解决: 词的索引
Java类库: Map接口
第20章词典的实现
基于数组的实现
一个无序数组词典
一个有序数组词典
基于向量的实例
链式实例
一个无序链式词典
一个有序链式词典
第21章散列概述
散列是什么
散列函数
计算散列码
将散列码压缩成散列表的索引
处理冲突
用线性探测实现开放定址
用二次探测实现开放定址
用双重散列实现开放定址
开放定址的潜在问题
链地址
第22章用散列实现词典
散列的效率
容载分析
开放定址消耗分析
链地址消耗分析
再散列
不同冲突解决方案的对比
用散列实现词典的实例
散列表中的条目
数据域和构造函数
getValue, remove和add方法
迭代器
Java类库: HashMap类
Java类库: HashSet类
第23章树
树的概念
层次化的数据组织
树的术语
树的遍历
遍历二叉树
一般树的遍历
树的Java接口
树的通用接口
二叉树的接口
二叉树的例子
表达式树
决策树
二叉查找树

一般树的例子
语法分析树
游戏树
第24章树的实现
二叉树的节点
节点的接口
二叉树节点的实现
ADT二叉树的实现
创建基本二叉树
privateSetTree方法
访问器与更改器方法
计算高度和节点数
遍历
表达式树的实现
一般树
一般树的节点
用二叉树表示一般树
第25章二叉查找树的实现
开始
二叉查找树接口
重复的条目
开始类定义
查找和检索
遍历
添加条目
递归实现
迭代实现
删除条目
删除一个叶子节点的条目
删除节点有一个孩子的条目
删除节点有两个孩子的条目
删除为根的条目
递归实现
迭代实现
操作的效率
平衡的重要性
节点添加的顺序
ADT词典实现
第26章堆的实现
再论ADT堆
用数组表示堆
插入条目
删除根
创建堆
堆排序
第27章平衡查找树
AVL树
单旋转
双旋转
实现细节
2-3树
查找2-3树
添加条目至2-3树
添加时分裂节点
2-4树
添加条目至2-4树
比较AVL, 2-3和2-4树
红黑树
红黑树的性质
添加条目到红黑树
Java类库: TreeMap类
B树
第28章图
一些示例和术语
公路线路图
航空线路图
迷宫

遍历
广度优先遍历
深度优先遍历
拓扑排序
路径
寻找路径
无权图的最短路径算法
加权图中的最短路径
ADT图的Java接口
第29章图的实现
两种实现的概述
邻接矩阵
邻接表
顶点和边
类Vertex的规格说明
内部类Edge
实现Vertex类
ADT图的实现
基本操作
图算法在 线 部 分
第30章可变的、 不可变的和可复制的对象(英文版本)
附录AJava基础
附录BJava类
附录C从已有类创建新类
附录D类的设计
附录E异常处理
附录F文件输入与输出
附录G文档与程序设计风格
內容試閱
前 言
作者的话
欢迎大家阅读《数据结构与抽象Java版(第三版)》。这是一本针对数据结构入门课程(通常被称为CS-2)而编写的书, 它可以作为我写的另外一本书Imagine!Java的续篇。
无论是一名教师还是一位学生, 我想告诉你, 这本书的撰写是基于我执教本科计算机科学课程30余年的经验。我希望这本书具有很好的读者友好性, 使学生可以毫不费力地学, 教师可以事半功倍地教。为了达到这个目标, 你会发现学习材料是以小块我称之为小节的形式组织的, 这样易于消化学习内容, 促进学习。本书用大量模拟现实世界问题的例子作为新素材, 帮助学生更好地学习和掌握抽象概念。并使用大量简单的图表阐明、 厘清了复杂的思想。
我希望你喜欢读这本书。像很多已经读过此书的读者一样, 可以有效且不断地学习或者讲授数据结构。
致以亲切的问候

附言: 十分乐意与使用本书的教师和学生们保持联系。下面是我的几种联系方式:
我的Facebook: www.facebook.commakingitreal
我的Twitter: twitter.comFrank_M_Carrano
我的电子邮箱: carrano@acm.org
我的博客: frank-m-carrano.commakingitreal
学生注意事项
本书所包含的主题涉及各种数据组织方法的处理, 可以使应用程序高效地访问和操作数据。这些主题是以后学习计算机科学的基础, 因为它们提供了创建复杂和可靠的软件所需要的基础知识。无论是对设计电子游戏感兴趣还是喜欢开发机器人控制手术的软件, 数据结构的学习对成功而言都至关重要。即使现在不打算学习本书中的所有主题, 以后也有可能会接触到它们。衷心希望大家喜欢阅读本书, 并希望它成为未来课程学习的有用参考工具。
在看完这个前言之后, 读者应该阅读一下引言。这样就可以快速地了解它的主要内容, 以及在开始学习前所需要了解的相关Java的知识。附录A到附录G回顾了Java的基础知识、 类、 继承、 异常、 文件和javadoc风格的注释。请注意, 在本书的最后还给出了Java的保留字、 基本数据类型、 运算符的优先级和Unicode字符的列表。
另外, 请一定要浏览此前言的剩余部分, 从而了解本书将对你的学习有帮助的特色之处。
组织结构
本书主题的组织、 顺序的安排和内容展开的幅度都更易于学习和教学。它使读者一次专注于一个概念, 为读者提供主题学习顺序的灵活性, 并清晰地区分抽象数据类型(ADT)的说明和具体实现。为了达到这些目标, 本书将内容组织成30章, 每章都由一些短小的编了号的小节组成, 每个小节讲解一个概念。每一章或是讲述一个ADT的说明, 或是讲述它的实现。读者可以选择在了解一个ADT的说明后紧接着学习它的实现, 也可以选择在考虑任何实现问题之前先探讨若干个ADT的说明和使用。本书的组织结构可以使读者方便地选择自己喜欢的主题顺序进行阅读。
内容一览表
下面的各章名称列表显示了本书内容的整体组成情况。下面将会更进一步地描述各个章节的主要内容。请注意, 第30章(英文版本)和附录是在线提供的内容在线章节请登录华信教育资源网www.hxedu.com.cn下载。。
第1章 袋子
第2章 用数组实现袋子
第3章 用链表实现袋子
第4章 算法的效率
第5章 栈
第6章 栈的实现
第7章 递归
第8章 排序引论
第9章 快速排序方法
第10章 队列、 双端队列和优先队列
第11章 队列、 双端队列和优先队列的实现
第12章 线性表
第13章 用数组实现线性表
第14章 用链表实现线性表
第15章 迭代器
第16章 有序表
第17章 继承及线性表
第18章 查找
第19章 词典
第20章 词典的实现
第21章 散列概述
第22章 用散列实现词典
第23章 树
第24章 树的实现
第25章 二叉查找树的实现
第26章 堆的实现
第27章 平衡查找树
第28章 图
第29章 图的实现
第30章 可变的、 不可变的和可复制的对象
附录
A.Java基础
B.Java类
C.由已有类创建新类
D.类的设计
E.异常处理
F.文件输入与输出
G.文档与程序设计风格
第3版的新内容
根据读者和审稿人的意见, 对部分素材进行了重新组织。很多学生对栈和队列已经相当熟悉了, 所以对这些数据组织方式的内容出现在这一版较靠前的章节中。而且, 重新组织以后, 学生可以更好地理解链接数据的难点。在链表中添加或者删除头节点是最简单的操作。在介绍袋子的过程中, 本书使用这些简单的链表操作来实现袋子。在袋子之后介绍的是栈, 栈是一个更加有用的组织方式, 它的一种实现也是基于相同的简单链表。队列的实现为讨论对链表尾节点进行添加和删除提供了机会。最后, 本书对线性表的处理中关注了对链表中间节点进行添加和删除的操作。
读者将注意到相对于前一版本, 算法的效率(包括提升动机)、 递归和排序等内容也出现在此版本的靠前章节中。为了保持对数据结构的关注, 将原来的前三章Java类、 由已有类创建新类和类的设计移到了附录部分。现在引言之后直接就开始介绍第一个数据合集袋子。不过, 对于在开始学习本书主题之前需要学习Java类的读者, 仍然可以在附录中找到原来这些章节的完整内容。
最后, 这一版增加了一些新的特色。本书以问题解决的形式展示了大量的例子。在这种方式下, 首先提出一个问题, 然后讨论它的解决方案并进行实现。偶尔会出现的设计决策会探讨一个解决方案的多种设计选择。这两个新的特色帮助学生思考程序设计的重要方面, 也让他们在特定的场景下思考概念。上一个版本中已有的注释、 编程小贴士和自测问题(含答案)在本版中均进行了保留。此外, 读者将发现Deque接口、 ArrayDeque类的介绍以及其他的项目实践题目。
下面是本书新内容的总结:
● 较早介绍抽象数据类型、 可变大小数组和链接数据。
● 对链接数据的循序渐进的讲解。
● 较早介绍算法效率、 栈、 递归、 排序和队列等内容。
● 有需要较好的算法效率的动力。
● 第1章至第3章袋子、 用数组实现袋子和用链表实现袋子介绍和实现ADT袋子。
● 新元素包括问题解决和设计决策。
● 第二版中出现在开头章节的对Java类的回顾内容现在移到了附录中。
● 标准接口Deque和类ArrayDeque的涵盖。
● 附加的实践项目。
● 自测问题的答案出现在每章的最后而不是附录中。
促进学习的特色之处
首先, 每章一开始都给出了内容列表, 学生需要阅读的预备章节和附录列表, 以及本章知识的学习目标。其次, 贯穿本书还出现了如下所示的其他教学元素:
注 以楷体字印刷的段落对重要的思想进行描述或者总结, 且需要和上下文一起阅读。
编程小贴士 在相关之处给出的改进或者有助于编程的建议。
示例 阐明新概念的大量例子。
解决问题 以解决问题的形式给出的大型例子, 其中首先提出问题, 然后对其解决方案进行讨论、 设计和实现。
设计决策 在制定解决方案的时候, 为读者可能做出的设计选择进行探讨。设计决策这一元素列出这样的设计选项, 并给出为特定例子所做出的最终选择的依据。这些讨论经常出现在解决问题例子的上下文中。
自测问题答案 在每一章中都会提出一些自测问题, 融合在章节的文字中, 来巩固刚刚提出的概念。这些自我检测问题帮助读者理解这些知识, 因为回答这些问题需要停顿和反思。这些问题的答案在每一章的最后给出。练习题和实践项目 可以通过解决每一章最后的练习题和实践项目来进行更深入的实践。遗憾的是, 尽管不是课堂授课, 我们也不能给读者提供这些练习题和实践项目的答案。只有采用本书进行教学的教师才可从出版商那里获取选中的答案。如果需要获得这些练习题和实践项目的帮助, 读者需要联系你的指导老师。
教师和学生可使用的教辅资源
以下各项资源在出版商的网站pearsonhighered.comcarrano上都可以访问到:
● 本书中出现的Java代码
● 本书出版以来已发现的所有印刷错误的链接
● 其他的在线内容的链接, 下面将进行介绍
教师资源为获取本书的教辅资源, 可参阅本书目录后所附的教辅申请表编者注。
以下访问受限的资源只提供给采用本书进行教学的教师。教师需要登录Pearson教师资源中心(访问pearsonhighered.comcarrano)来获取这些资源:
● PowerPoint授课幻灯片
● 教师解决方案手册
● 书中的图表
除此之外, 教师可以访问本书的同步网站来获取以下在线高级内容, 仍然可以通过pearsonhighered.comcarrano进行访问:
● 第30章
● 术语表
● 附录B、 附录C和附录D的练习题和实践项目
请联系你的Pearson销售代表来获取教师访问码。联系方式可以通过访问pearsonhighered.comreplocator进行查看。
学生资源相关文件也可登录华信教育资源网(www.hxedu.com.cn下载。
以下资源学生可以通过登录本书同步网站(访问pearsonhighered.comcarrano)来获得:
● 第30章
● 术语表
● 附录B、 附录C和附录D的练习题和实践项目
学生必须使用书前面的访问卡来注册和进入同步网站。没有访问码的学生可以按照同步网站上列出的步骤来购买访问权限。
请注意Java类库可以通过访问download.oracle.comjavase7docsapi来获得。
章节概述
本书的读者应当已经修完一门编程课程, 最好是Java编程。附录部分覆盖了假定读者要了解的Java基础知识。大家可以将附录作为复习内容, 或者作为从其他编程语言向J

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.