数据结构(Java版)
分類: 图书,计算机与互联网,程序语言与软件开发,算法与数据结构,
品牌: 李维斯等著
基本信息·出版社:清华大学出版社
·ISBN:7302085528
·条形码:9787302085522
·包装版本:1
·装帧:平装
产品信息有问题吗?请帮我们更新产品信息。
内容简介本书是数据结构课程的优秀教材。主要讲述如何在正确的软件工程原则指导下,用精心定义的数据结构和算法实现高质量的程序。为使读者能更好的理解本书,各章在内容安排上从易到难,对于每章所涉及的数据结构,都先介绍其概念,然后举例说明其用途,再讨论如何用Java编程语言实现,最后对各种实现的效率进行分析,对比。
作者简介John Lewis任教于Villanova大学。他的研究领域包括软件工程、网络程序设计等。他还是ACM和IEEE的成员,在计算机教学领域成果颇丰。
Joseph Chase任教于Radford大学,他的研究领域包括人机交互、软件工程。他也是ACM和IEEE的成员。
媒体推荐书评
随着Java语言的普及,已经有越来越多的程序开发人员喜欢上这种简单易懂的面向对象语言。与此同时,随着学习和应用的深入,数据结构和算法设计的重要性愈发显现出来。对于以前接触过C或C++的程序员而言,使用C或C++开发诸如队列、堆栈、链表和树等数据结构并非难事。遗憾的是,现在介绍Java数据结构和算法的好书却较少,使大家在进一步学习、使用Java的过程中遇到了一些困难。本书正是为此目的而撰写的。作者使用浅显易懂的语句来阐述一个个常见的数据结构,并配以大量的例子和代码来帮助大家理解如何使用Java实现这些数据结构。此外,本书还从软件工程的高度来分析、比较各种数据结构的实现效率,指出各种算法的优缺点。特别值得一提的是,每章都提供了大量的习题供读者复习时使用。附录A简要地阐述了Java面向对象概念,以帮助大家能更好地学习本书的内容;而附录B提供了Java类库中许多常用类的参考资料,使大家能够更容易地开发出自己的Java程序。
这确是一本介绍Java数据结构的好书。为使读者能更好地阅读本书,各章在内容的安排上不仅从易到难,而且在组织形式上力求保持一致:对于每章所涉及的数据结构,都先介绍它们的概念,接着举例说明它们的用途,然后讨论如何实现它们,最后分析比较各种实现的效率。为方便读者的学习,书中所有例子的源代码都可下载( www.aw.com/cssupport)。
全书的翻译出版是集体工作的结晶。柳赐佳、周莎莎、施晓东、施惠琼、蔡桂凌、施琳琼、陈华、柳晁锦、柳晁惠、施卓成、张琼雯、张庭辉、方杰等负责全书的翻译工作,柳小艳、孔颂燕、梁锦伦等负责全书的审校工作,施金庭、柳聿荫、施群肖和缪彩珠等负责全书的录入和排版工作。全书最后由施平安负责统稿。
在翻译过程中,我们对书中出现的所有术语和难词难句都进行了仔细的推敲和研究,然而有些问题在译者本人的研究领域中也不曾遇到过,疏漏和争议之处在所难免,望广大读者提出宝贵的意见。
译者
2004年2月10日
目录
第1章 软件工程
1.1 软件开发
1.2 软件质量
1.3 软件开发生命期模型
1.4 统一建模语言
1.5 错误的处理
1.6 算法的分析
1.7 软件工程和数据结构
第2章 集合
2.1 本章简介
2.2 袋集合
2.3 使用袋的例子:bingo
2.4 袋的数组实现
2.5 分析袋的数组实现
第3章 链式结构
3.1 链式引用
3.2 管理链表
3.3 无链接的元素
3.4 袋的链式实现
3.5 分析袋的链式实现
第4章 递归
4.1 递归思想
4.2 递归编程
4.3 使用递归
4.4 分析递归算法
第5章 查找与排序
5.1 查找
5.2 排序
第6章 堆栈
6.1 堆栈ADT
6.2 使用堆栈:计算后缀表达式
6.3 使用堆栈:模拟递归
6.4 堆栈的链式实现
6.5 堆栈的数组实现
6.6 实现堆栈:java.util.Stack类
6.7 分析堆栈的实现
第7章 队列
7.1 队列ADT
7.2 使用队列:代码键
7.3 使用队列:模拟售票器
7.4 使用队列:基数排序法
7.5 队列的链式实现
7.6 队列的数组实现
7.7 使用循环数组来实现队列
7.8 队列实现的分析
第8章 链表
8.1 链表ADT
8.2 使用有序链表:制订赛程
8.3 使用索引链表:Josephus问题
8.4 链表的数组实现
8.5 链表的链式实现
8.6 分析链表的实现
第9章 树
9.1 树
9.2 树的实现策略
9.3 树的遍历
9.4 实现二叉树
9.5 使用二叉树:表达式树
第10章 二叉查找树
10.1 二叉查找树
10.2 二叉查找树的链式实现
10.3 使用二叉查找树实现有序链表
10.4 平衡二叉查找树
10.5 实现二叉查找树:AVL树
10.6 实现二叉查找树:红黑树
10.7 实现二叉查找树:Java集合API
第11章 堆
11.1 堆
11.2 使用堆:堆排序
11.3 使用堆:优先队列
11.4 堆的链式实现
11.5 堆的数组实现
11.6 分析堆的实现
第12章 多叉查找树
12.1 合并树的概念
12.2 2-3树
12.3 2-4树
12.4 B-树
12.5 B-树的实现策略
第13章 散列
13.1 散列
13.2 散列函数
13.3 解决冲突
13.4 删除哈希表中的元素
13.5 Java集合API中的哈希表
第14章 图
14.1 无向图
14.2 有向图
14.3 网络
14.4 图的通用算法
14.5 图的实现策略
附录A Java面向对象概念
A.1 面向对象简介
A.2 使用对象
A.3 类库和包
A.4 对象的状态和行为
A.5 类
A.6 封装
A.7 构造函数
A.8 方法重载
A.9 再谈引用
A.10 static修饰符
A.11 包装类
A.12 接口
A.13 继承
A.14 类层次体系
A.15 多态
A.16 异常
附录B Java类库
AbstractButton(javax.swing)
ActionEvent(java.awt.event)
AdjustmentEvent(java.awt.event)
Applet(java.applet)
ArrayList(java.util)
AWTEvent(java.awt)
BigDecimal(java.math)
BigInteger(java.math)
BitSet(java.util)
Boolean(java.lang)
BorderFactory(javax.swing)
BorderLayout(java.awt)
Box(java.swing)
BoxLayout(java.swing)
BufferedReader(java.io)
BufferedWriter(java.io)
ButtonGroup(java.swing)
Byte(java.lang)
Calendar(java.util)
CardLayout(java.awt)
Character(java.lang)
Class(java.lang)
Color(java.awt)
Component(java.awt)
ComponentAdapter(java.awt.event)
ComponentEvent(java.awt.event)
Container(java.awt)
ContainerAdapter(java.awt.evnet)
ContainerEvent(java.awt.enent)
Cursor(java.awt)
Date(java.util)
DateFormat(java.text)
DateFormatSymbols(java.text)
DecimalFormat(java.text)
DecimalFormatSymbols(java.text)
Dimension(java.awt)
Double(java.lang)
Error(java.lang)
Event(java.awt)
Exception(java.lang)
Float(java.lang)
FlowLayout(java.awt)
FocusAdapter(java.awt.event)
FocusEvent(java.awt.event)
Font(java.awt)
FontMetrics(java.awt)
Format(java.text)
Graphics(java.awt)
GregorianCalendar(java.util)
GridBagConstraints(java.awt)
GridBagLayout(java.awt)
GridLayout(java.awt)
Hashtable(java.tuil)
Image(java.awt)
ImageIcon(java.swing)
InputEvent(java.awt.event)
InputStream(java.io)
InputStreamReader(java.io)
Insets(java.awt)
Integer(java.lang)
ItemEvent(java.awt.event)
JApplet(javax.swing)
JButton(javax.swing)
JCheckBox(javax.swing)
JCheckBoxMenuItem(javax.swing)
JColorChooser(javax.swing)
JComboBox(javax.swing)
JComponet(javax.swing)
JFileChooser(javax.swing)
JFrame(javax.swing)
JLabel(javax.swing)
JList(javax.swing)
JOptionPane(javax.swing)
JPanel(javax.swing)
PasswordField(javax.swing)
JRadioButton(javax.swing)
JScrollPane(javax.swing)
JSlider(javax.swing)
JTabbedPane(javax.swing)
JTextArea(javax.swing)
JTextField(javax.swing)
JToggleButton(javax.swing)
JToolTip(javax.swing)
KeyAdapter(java.awt.event)
KeyEvent(java.awt.event)
Locale(java.util)
Long(java.lang)
Math(java.lang)
MessageFormat(java.text)
MouseAdapter(java.awt.event)
MouseEvent(java.awt.event)
MouseMotionAdapter(java.awt.event)
Number(java.lang)
NumberFormat(java.text)
Object(java.lang)
ParsePosition(java.text)
Point(java.awt)
Polygon(java.awt)
PrintStream(java.io)
Random(java.util)
Rectangle(java.awt)
Short(java.lang)
SimpleDateFormat(java.text)
SimpleTimeZone(java.util)
Stack(java.util)
String(java.lang)
StringBuffer(java.lang)
StringTokenizer(java.util)
System(java.lang)
SystemColor(java.awt)
Thread(java.lang)
Throwable(java.lang)
Timer(javax.swing)
TimeZone(java.util)
URL(java.net)
Vector(java.util)
Void(java.lang)
Window(java.awt)
WindowAdapter(java.awt.event)
WindowEvent(java.awt.event)
……[看更多目录]