求!!!!!!!!!!!java实现图数据结构构从应用到实现 Java版PDF

商品编号:
京 东 价:
[定价:¥]
支  持:
搭配赠品:
服务支持:
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
数据结构从应用到实现(Java版)
加载中,请稍候...
商品介绍加载中...
扫一扫,精彩好书免费看
京东商城向您保证所售商品均为正品行货,京东自营商品开具机打发票或电子发票。
凭质保证书及京东商城发票,可享受全国联保服务(奢侈品、钟表除外;奢侈品、钟表由京东联系保修,享受法定三包售后服务),与您亲临商场选购的商品享受相同的质量保证。京东商城还为您提供具有竞争力的商品价格和,请您放心购买!
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
印刷版次不同,印刷时间和版次以实物为准。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
浏览了该商品的用户还浏览了
加载中,请稍候...
七日畅销榜
新书热卖榜
iframe(src='///ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')热销排行榜
1.2.3.4.5.6.7.8.9.10.
最近浏览的其他商品
浏览更多同类商品
【 】??????????
数据结构从应用到实现-(Java版)
计算机科学丛书
978-7-111-23114-1
机械工业出版社
出版日期:
读者对象:
¥30.70&&&
立刻节省:¥11.30
所属分类:
C和指针-(英文版)
&本书用&从外向里&的方式,先介绍数据结构的性质和实际应用,再讲解如何构建数
据结构。全书从应用的角度考虑对数据结构需要实现的功能及其时间效率提出要求,随后
讨论如何设计并实现符合这些要求的数据结构。这种讲述方式可以使读者很容易地将所学
的知识运用于实际的应用开发中,真正做到理论与实践相结合,并最终回归应用。
&&& 通过本书的学习,读者可以学会在开发中如何根据实际需要选择已有的数据结构或者
设计满足特定要求的数据结构,如何利用这些数据结构实际开发应用软件,并把握所开发
的应用软件的效率。
&&本书系统地介绍了数据结构以及数据结构与对象之间的联系。主要内容包括:算法效率
的输入规模、阶和大0,数据结构的无序和有序列表,队列和栈基于数组和链表的设计实例
递归详解,二叉查找树和AVL树,堆、散列表和排序以及图论等。对于每一种数据结构的性
质和用途,本书介绍了实现它的Java类的公有接口以及接口操作的估算运行时间。学生通过学
习本书可以使用Java类的公有接口编写和开发Java应用软件,设计和实现满足特定要求的数据
&&& 数据结构的研究及教学一直促进着计算机科学与技术的发展,计算机科学与技术的发展
也同样影响着数据结构的研究与教学。
&&& 数据结构同时研究两个方面的内容:数据结构的设计和数据结构的使用。前者研究如何
设计并实现高效、基础的数据结构,以供应用软件使用;后者则研究如何利用这些数据结构
有效地实现应用软件。迄今为止的数据结构教学把重点放在数据结构的设计和实现方面,讲
授基本的数据结构、如何设计并实现数据结构、如何分析数据结构的效率,并从可选的数据
结构或数据结构的实现中进行选择。但总体来说,对于数据结构的使用方面,大多停留在比
较浅显的程度。从数据结构的发展来看,这样做也是无可非议的。
&&& 然而,数据结构发展到今天,基本的数据结构的设计与实现已不再是高深的技术,流行
语言的数据结构实现已唾手可得,人们已不能满足于了解数据结构的设计与实现,而更加渴
望深入学习为什么要设计这样的数据结构、为什么要这样设计并实现数据结构,以及如何利
用数据结构来更方便地设计开发应用软件。
&&& 本书就是为了满足这样的需求而产生的。本书从应用的角度考虑对数据结构需要实现的
功能及其时间效率提出要求,然后考虑如何设计并实现符合要求的数据结构。通过本书的学
习,读者可以学会在开发中如何根据实际需要选择已有的数据结构或者设计满足特殊要求的
数据结构,如何利用这些数据结构实际开发应用软件并把握所开发的应用软件的效率。
&&& 因此,这是一本顺应计算机科学与技术的发展和数据结构教学需求的教科书,为数据结
构的教学变革提供了一个选择和思路。本书可以用于数据结构的教学,也可以为那些已经学
过数据结构并希望能够更好地使用数据结构的读者提供极大的帮助。
&&& 为了能够让读者更好地理解书中的内容,我们在翻译过程中对一些难懂之处进行了适当
的改写,并纠正了原书中的几处错误。由于译者水平有限,难免有误译的地方,请读者指正。
&&& 2007年12月
&&&& 前& 言
& 对于数据结构,有两种学习的途径。
& 一种是&从里向外&的途径,在学习如何把数据结构应用于解决问题之前,我们首先学
习数据结构的实现,即如何构建数据结构。换句话说,从数据结构的核心开始,向外建立它
在实际问题中的使用。
&&& 然而,从里向外的途径与实践中软件的构建习惯不协调。在实践中,我们是通过对象库
的应用程序设计接口(APl)了解对象库。在这里,&从外向里&的途径成为规范:首先,通
常也仅能通过组件或对象的接口看到它们,接口刻画对象或组件的行为,因而刻画它是否适
合给定的应用。也就是说,在学习如何构建一个组件之前研究它做什么。
从外向里:从价格标签接口到实现
&&& 在本书,我们对接口与数据结构的实现同样感兴趣。按着从外向里的途径展示它们,因
为这样做可以使学生很容易地把课堂上所学的东西应用于实际的软件开发。下面的一系列步
骤概述我们学习数据结构的途径。
&&& 1.通过讲述数据结构的性质及其实际应用来引入数据结构。
&&& 这一步骤使学生熟悉数据结构的特征行为,为把数据和操作封装到Java类做准备。
&&& 2.通过给出实现数据结构的Java类的公有接口来形式化这个数据结构的特征性质。
&&& 这一步骤定义可以应用于这个数据结构的一组操作,在步骤1的讨论中对这些操作进行了
阐述。对于这个接口,我们还给出一个&价格标签&,即接口操作的运行时间。
&&& 价格标签是为应用软件选择数据结构过程的一个重要考虑因素。有人会说,只有在数据
结构实现之后,才能确定价格标签。尽管事实的确如此,但是,实践中用于构建软件的从外
向里方式通常是一些人构建数据结构,而另一些人在外部使用数据结构。负责外部工作的人
员必须完全且只有依赖于接口所带来的信息。给接口附带一个价格标签是外部工作人员为手
边的应用评估并选择最好对象的关键。
&&& 为了与这一方法保持一致,我们给接口附加价格标签,但是我们采用了一个有效的折中:
在接口中,指定最小的实现需求,使得操作的运行时间保持在价格标签内。
&&& 我们承认这使接口与实现间的分离变得模糊。使这一分离变得模糊的另一个原因是,同
一个人即学生,既工作于外部(使用数据结构)又工作于内部(构建数据结构),尽管时间不
同。对于学生来说处理接口和实现分离的最好方法是,首先想像自己是对接口和价格标签有
充分认知的数据结构的客户,然后,想像自己是这一数据结构的实现者,被告知构建这个数
据结构的限制(价格标签)是什么。
&&& 3.通过使用在步骤2中所给出的Java的类接口编写Java应用程序来进一步说明数据结构
&&& 这一步骤使学生明确理解如何利用公有接口已知的数据结构构建Java应用程序,但是,
这时它的内部实现是隐藏的。
&&& 步骤2和步骤3强调数据结构的接口。通过反复地只使用数据结构的公有接口来构建应用
程序,学生们可以获得利用组件来进行软件开发的实际感受,对组件内部的实现细节(确实
&可能)无需了解。
&&& 4.设计并实现数据结构。即开发在步骤2中给出接口的Java类的代码,分析操作的运行
时间,并对照价格标签验证这些运行时间。
&&& 这一步骤强调两种方式的代码复用:(a)合成:在构建或合成新的数据结构中使用前面
的数据结构作为组件(Java)对象,(b)继承:通过继承前面构建的数据结构(Java类)来构
建新的数据结构。
&&& 尽管我们遵循从外向里的学习途径,但是,这个&里&的部分并没有退化成使用Java集
成框架中的类。相反,它与&外&的部分处于相同的立足点,理解实现细节使学生可以学习
构建数据结构的方方面面,包括评估在一组候选实现中进行选择时的权衡。
&&& 以上这些步骤除提供一致的教学形式之外,还可以帮助学生理解并运用封装、接口与实
现的分离以及代码复用等重要的面向对象设计原则。
Java的必备知识
&&& 本书假定学生对Java 1.5具有CSl级别的背景知识,具体范围如下:程序结构、数据类型、
选择和循环的控制结构(包括if,if-else,for,while和repeat语句)以及数组。本书还假定学
生熟悉广泛使用的String类。
&&& 在假定CSl级别背景的前提下,第1章是面向对象程序设计的Java导引,介绍对象和类、
继承、类object、异常、核心输入与输出特征、类包及访问控制。在输入与输出部分,描述类
iava.util.StringTokenizer和java.util.Scanner(对于Java 1.5是新的),并讨论它们的典型用途。
&&& 这一导引部分还特别介绍面向设计的各种特性,包括多态性、抽象类和接口。
&&& 最后一节讨论构建实用且健壮的数据结构时,不可或缺的工具:新Java 1.5的通用性。这
一讨论还详述类java.util.ArrayList的设计与使用,这个类是实现容器结构或集合的非常有用的
本书的使用方案
&&& 作为以基本数据结构和排序算法为主要内容的一门基础课程,在两个星期对所需的Java
工具和技术的回顾或学习之后,可以讲授第1-10章,跳过10.7节(AVL树),以及第12~13
章,跳过13.3节(堆排序)和13.4节(基数排序)。
&&& 作为以实验而不是讲授为主的Java课程,可以增加第11章的堆,以及第13.3和13.4节的堆
排序和基数排序。
&&& 高级课程可以加入的题材包含10.7节的AVL树,及第14章和第15章的图论。在时间有限
的情况下,可以不讲第15章图论算法的实现细节,第14章足以使学生熟悉图论算法。
&&& 作为两学期课程,可以讲授全书的内容,包括第1章的Java背景知识。第一个学期可以
包含第1~9章,直到二又树/普通树。第二学期包含从第10章的二叉查找树/AVL树开始的余
&&& 教学组织
&&& &除第l章和第2章的预备知识之外,每一章从学习目标的列表开始。学习目标给出本章学
&&& 习内容的精确概括。
&&& &以下面的方式给出每一章的关键点:
&&& 这些关键点在每一章结束的总结中逐条列出。
&&& &以下面的方式给出数据结构的Java类的公用接口:
&&&& Class classname
&&& 构造器
&&& 每一个公用构造器的署名和描述
&&& 每一个公用方法的运行时间(价格标签)、署名和描述
&&& &以下面的风格给出每一个完整的Java类实现:
&&& Class File number&&& Class Fils Name
&&& 类的概况,其中可能包括若干构造器或方法。
&&& &全书使用伪代码书写算法,提供独立于语言的过程描述。这些算法的算法头有如下形式:
&&& 伪代码中所使用的记号是自行解释的。
&&& &除第2章外,每一章以一个要点总结(Summary)列表结束,其中包括这一章中的关键
&&& 点,以及其他需要记住的重要内容,包括关于Java的问题。
&&& &除第2章外,每一章以练习和程序设计问题的形式检测学生对题材的理解程度:
&&& &练习大部分是概念性的与语言无关的题目,特别关注对所学内容的回顾、抽象设计问题
&&& 及时空分析。
&&& &程序设计问题集中讨论Java类的构建,特别关注设计和实现中的各种选择以及代码复
&&& 我要忠心感谢鲁特格斯大学(Rutgers University)计算科学系的数据结构小组的成员,
我同他们一起教授这门课程十余年,他们为这本书的成型提供了直接和间接的帮助。特别要
感谢现在和之前的教员Diane Souvaine,Ken Kaplan,Miles Murdocca和Don Smith对本书内容
进行的讨论和审阅。
&&& 感谢我的朋友和以前的研究生同僚Nathalie Japkowicz,George Katsaros和Dan Arena,他
们认真地审查了最初的c++草稿,感谢Gabriela Hristescu,他在排版方面提供了帮助,感谢Sri
Divakaran审查了部分Java手稿。1997年秋季数据结构课程的几位学生阅读了本书最初的全部
手稿,并给出很有价值的反馈。感谢所有本书的忠实支持者,特别是Alex Chang。还要感谢
2002年秋季和2003年春季的全体同学,他们指出书中的各种错误以及为鲁特格斯大学编写的
早期版本中的不足之处。&&& .
&&& 还要感谢米德塞科斯县立学院(Middlesex County College)数据结构课程的教师们,以
及我在朗讯技术公司工作时的前同僚,我与他们讨论本书的某些内容。特别要感谢朗讯的
Tom Walsh对我的鼓励。
&&& 感谢使本书做得更好的所有审稿人员:北西雅图社区学院的Barbara Goldner,佛罗里达
中央大学的Mark Llewellyn,明尼苏达大学的Chris Dovolis,亚斯兰德大学的Iyad A.Ajwa,
罗切斯特理工学院的Minseok Kwon,北卡罗莱那州立大学的George Rouskas,罗切斯特理工
学院的Roxanne Canosa,西伊利诺伊大学的Mary Horstman,马里兰大学大学院大学的Ray
Whitney,以及伯明翰扬大学的Robert P.Burton。
&&& Prentice Hall的编辑组在这项计划中给予我方方面面的支持。感谢我的编辑Tracy
Dunkelberger,她坚信出版这本书的计划是一件有价值的事情,她令人愉快的自信使得我安心
地使这本书成为现实。感谢Christianna Lee和Carole Snyder,他们引导我通过了评审过程,并
& & 友好耐心地回应我的所有问题。
&&& Laserwords公司的John Shannon,Irwin Zucker,Camille Trentacoste和制作人员帮助改正
& 了书中大量排印和文法上的错误,并保证页码准确无误。由于他们的努力,亲爱的读者可以
& 远离我在这些方面的不经意的错误或疏忽。为此,我要忠心地感谢他们。
&&& 我还要深深感谢我的家人和我妻子的家人,他们给予我忠告和鼓励,当事情进展不顺利
& 时给予我安慰。我要特别感谢我的父母和我的岳母,以及我妻子的祖父母对我自始至终的支
& 持。尤其要感谢我的父亲C.N.Venugopal和我妻子的祖父Dr.Hayrettin Tanacan的特别参与。
& 尽管二位平时都不接触计算机,特别是数据结构,但是他们尽心地阅读此书,设法准确理解
& 我在这本篇幅如此长的书中讲的到底是什么。
&&& 感谢我的妻子Zehra Tulin在我写这本书期间给我各方面的帮助,更重要的是她一如既往
& 的爱和支持。热烈拥抱我的儿子Amar,他对爸爸坚定不移的自豪永远激励着我。
&&& 最后,感谢鲁特格斯大学和米德塞科斯县立学院这么多年选修我的课的学生们。他们在
& 我成为教育工作者的成长过程中帮助了我,我希望这本书可以作为我感激他们每一位的象征。
&&& 最后,我非常乐于听到读者对这本书的看法&&你们喜欢或不喜欢什么,以及你发现的
& 错误。你可以通过.edu把电子邮件发给我。你的反馈将帮助我为你更
& 好服务。
&&& Sesh Venugopal
&&& 皮斯卡特韦,新泽西州
&&& 2006年11月
Sesh Venugopal拥有特格大学博士学位,现为拉特格大任,他负责拉特格大学的数据结构和软件方法的教学,同时还经营自己的IT和教育咨询公司。
第l章Java面向对象的程序设计&&
1.1对象与封装&&&&&&&&&
& 1.1.1对象&&&&&&&&&&
& 1.1.2生存期、状态和消息&&&
& 1.1.3对象的客户&&&&&&&
& 1.1.4接口与实现的分离&&&&
& 1.2类&&&&&&&&&&&&
& 1.2.1状态与行为&&&&&&&
& 1.2.2方法重载&&&&&&&&
& 1.2.3对象创建、构造器及垃圾回收
& 1.2.4方法调用&&&&&&&&
& 1.2.5静态域和静态方法&&&&
& 1.2.6对象引用&&&&&&&&
& 1.3继承&&&&&&&&&&&&
& 1.3.1超类与子类&&&&&&&
& 1.3.2继承域与特化域&&&&&
& 1.3.3构造器&&&&&&&&&
& 1.3.4创建对象&&&&&&&&
& 1.3.5继承方法和特化方法&&&
& 1.3.6方法覆盖&&&&&&&&
& 1.4类0bject&&&&&&&&&&
& 1.4.1方法equals&&&&&&&
& 1.4.2方法toString&&&&&&&
& 1.4.3方法clone&&&&&&&&
& 1.5异常&&&&&&&&&&&
& 1.5.1异常消息的解释&&&&&
& 1.5.2特有的错误处理&&&&&
& 1.5.3抛出异常&&&&&&&&
& 1.5.4捕获异常&&&&&&&&
& 1.5.5异常类&&&&&&&&&
& 1.6输入与输出&&&&&&&&
& 1.6.1终端驱动IO&&&&&&&&
& 1.6.2基于文件的输入与输出&&&
& 1.6.3字符串分解&&&&&&&&
& 1.6.4编写异常类&&&&&&&&
1.7类包&&&&&&&&&&&&
& 1.7. Java包&&&&&&&&&
& 1.7.2组建包&&&&&&&&&
& 1.7.3名字冲突解析&&&&&&&
1.8访问控制&&&&&&&&&&
& 1.8.1私有访问&&&&&&&&&
& 1.8.2包访问&&&&&&&&&&
& 1.8.3受保护访问&&&&&&&&
& 1.8.4公有访问&&&&&&&&&
& 1.8.5一个例子&&&&&&&&&
1.9多态性&&&&&&&&&&&
& 1.9.1多态引用&&&&&&&&&
& 1.9.2提升类层次&&&&&&&&
& 1.9.3降低类层次&&&&&&&&
& 1.9.4 instanceof操作符&&&&&&
1.10抽象类&&&&&&&&&&&
& 1.10.1抽象类Shape&&&&&&&
& 1.10.2抽象类的性质&&&&&&
.1.1l游乐园的例子&&&&&&&&
1.12接口&&&&&&&&&&&&
& 1.12.1 Java接口结构&&&&&&
& 1.12.2实现接口&&&&&&&&
& 1.12.3接口作为类型&&&&&&
& 1.12.4对接口的需求&&&&&&
& 1.12.5扩展接口&&&&&&&&
1.13通用性&&&&&&&&&&&
1.13.1拙ava.util.ArrayList用于集合
1.13.2 java.util.ArrayList的公有接口
1.13.3通用类的实现&&&
1.13.4通用接口的实现&&&&&
&& 1.13.5静态模板方法&&&&&&
& 1.14总结&&&&&&&&&&&&
& 1.15练习&&&&&&&&&&&
& 1.16程序设计问题&&&&&&&&
第2章数据结构概观&&&&&&&
2.1什么是数据结构&&&&&&&
2.2我们学习什么数据结构&&&&
2.3什么是抽象数据类型&&&&&
2.4OOP和Java在数据结构有什么优势
2.5如何选择正确的数据结构& &&&
第3章算法的效率&&&&&&&&
& 3.1多项式的算术运算:一个具体
&&& 例子&&&&&&&&&&&&
& 3.2基本操作&&&&&&&&&&
& 3.3输入规模&&&&&&&&&&
& 3.4函数的渐近增长&&&&&&&
& 3.5阶与大O&&&&&&&&&&&
& 3.5.1典型运行时间的阶&&&&&
& 3.5.2多变元的阶&&&&&&&&
& 3.5.3阶的相对顺序&&&&&&
& 3.5.4阶的算术运算&&&&&&
& 3.6最坏情况与平均情况&&&&
& 3.7总结&&&&&&&&&&&
& 3.8练习& &&&&&&&&&&&
第4章无序列表&&&&&&&&
& 4.1无序列表的性质&&&&&&
& 4.2顺序搜索&&&&&&&&&
& 4.2.1平均情况分析&&&&&&
& 4.2.2基于搜索模式的数据重排列
& 4.3类List&&&&&&&&&&&
& 4.4使用List的类ExpenseList&&&
&&& 4.4.1类Expense的接口&&&&
&&& 4.4.2类Expense&&&&&&&
&&& 4.4.3类ExpenseList的接口&&&
&&& 4.4.4类ExpenseList的实现&&&
&&& 4.4.5对象的相等与搜索&&&&
& 4.5链表&&&&&&&&&&&
&&& 4.5.1节点的定义&&&&&&&
&&& 4.5.2插入操作&&&&&&&&
&&& 4.5.3删除操作&&&&&&&&
&&& 4.5.4访问操作&&&&&&&
& 4.5.5循环链表&&&&&&&&
4.6类LinkedList&&&&&&&&
4.7类List的实现&&&&&&&&
4.8总结&&&&&&&&&&&&
4.9练习&&&&&&&&&&&&
4.10程序设计问题&&&&&&&
第5章有序列表&&&&&&&&&
& 5.1介绍&&&&&&&&&&&&
& 5.2二分搜索&&&&&&&&&&
& 5.2.1分成两半&&&&&&&&
& 5.2.2算法&&&&&&&&&&
& 5.3排序:接口java.1ang.Comparable
& 5.4类OrderedList&&&&&&&&
& 5.5合并有序列表&&&&&&&&
& 5.6使用OrderedList的列表归并&
& 5.6.1 Merger:一个实用类&&&
& 5.6.2归并类&&&&&&&&&
& 5.7类OrderedList的实现&&&&&
& 5.8总结&&&&&&&&&&&&
& 5.9练习&&&&&&&&&&&&
& 5.10程序设计问题&&&&&&&
第6章队列&&&&&&&&&&&
& 6.1队列的性质&&&&&&&&&
& 6.2 UNIX打印队列&&&&&&&
& 6.3类Queue&&&&&&&&&&
& 6.4使用Queue的类PrintQueue&&&
& 6.5类Queue的实现&&&&&&&
&&& 6.5.1设计1:使用基于数组的存储
&&& 6.5.2设计2:使用LinkedList&&
& 6.6总结&&&&&&&&&&&&
& 6.7练习&&&&&&&&&&&&
& 6.8程序设计问题&&&&&&&&
第7章栈&&&&&&&&&&&&
& 7.1栈的性质&&&&&&&&&&
& 7.2栈的应用&&&&&&&&&&
&&& 7.2.1括号匹配&&&&&&&&
&&& 7.2.2后缀表达式求值&&&&&
&&& 7.2.3中缀表达式到后缀表达式的
&&& 转换&&&&&&&&&&
& 7.3类Stack&&&&&&&&&&&
& 7.4后缀表达式求值包&&&&&&
&& 7.4.1类PostfixEvaluator.&&&&
& 7.4.2类StatusKeeper&&&&&
& 7.4.3类StackKeeper&&&&&
& 7.4.4类PostfixEvaluator的实现&
7.5类Stack的实现&&&&&&&
& 7.5.1设计l:使用数组列表进行
&&& 存储&&&&&&&&&
& 7.5.2设计2:使用链表进行存储
7.6总结&&&&&&&&&&&
7.7练习&&&&&&&&&&&
7.8程序设计问题&&&&&&&
笫8章递归&&&&&&&&&&
& 8.1递归定义&&&&&&&&&
& 8.1.1列表&&&&&&&&&
& 8.1.2有序列表&&&&&&&
& 8.1.3阶乘函数&&&&&&&
& 8.1.4斐波那契数列&&&&&
& 8.2递归程序与退回&&&&&&
& 8.2.1计算阶乘&&&&&&&
& 8.2.2计算斐波那契数列&&&
& 8.2.3关于链表的递归&&&&
& 8.3对数组的递归:二分搜索&&
& 8.4汉诺塔:一个应用&&&&&
&&& 8.4.1递归定义&&&&&&&
&&& 8.4.2递归程序&&&&&&&
& 8.5递归与栈&&&&&&&&
& 8.6递归的缺点&&&&&&&
& 8.7尾递归&&&&&&&&&
& 8.8总结&&&&&&&&&&
& 8.9练习&&&&&&&&&&
& 8.10程序设计问题&&&&&
第9章二叉树和普通树&&&&
& 9.1二叉树的性质&&&&&&
&&& 9.1.1组件&&&&&&&&
&&& 9.1.2节点位置代表的意义&
&&& 9.1.3结构&&&&&&&&
&&& 9.1.4递归定义&&&&&&
& 9.2-'叉树的遍历&&&&&&
& 9.3类BinaryTree&&&&&&
& 9.4二叉树的存储与重构&&
&&& 9.4.1二叉树的署名&&&&
& 9.4.2从二叉树的署名构建二叉树&
9.5赫夫曼编码&&&&&&&&&&
& 9.5.1统计编码与字典编码&&&&
& 9.5.2算法&&&&&&&&&&&
& 9.5.3平均代码长度和前缀性质& &&
& 9.5.4使用BinaryTree的类Huffman&
9.6类BinaryTree的实现&&&&&&
9.7基于栈的遍历&&&&&&&&&
& 9.7.1二叉树的中序遍历&&&&&
& 9.7.2类Visitor&&&&&&&&&&
9.8普通树&&&&&&&&&&&&
& 9.8.1例子:大学中的组织层次&&
& 9.8.2例子:UNIX文件系统&&&&
& 9.8.3实现中的空间问题&&&&&
& 9.8.4与二叉树的对应关系&&&
& 9.8.5普通树的署名&&&&&&
& 9.9总结&&&&&&&&&&&&
& 9.10练习&&&&&&&&&&&
& 9.11程序设计问题&&&&&&&
第10章二叉查找树和AVL树&&&
& 10.1比较树&&&&&&&&&&
&&& 10.1.1使用比较树的搜索时间&&
&&& 10.1.2比较树的高度&&&&&&
& 10.2& 叉查找树的性质&&&&&
& 10.3& 叉查找树的操作&&&&&
&&& 10.3.1搜索操作&&&&&&&&
&&& 10.3.2插入操作&&&&&&&&
&&& 10.3.3删除操作&&&&&&&&
& 10.4类BinarySearchTree&&&&&
& 10.5使用类BinarySearchTree&&&
&&& 10.5.1例子:树排序&&&&&&
&&& 10.5.2例子:计数关键字&&&
& 10.6类BinarySearchTree的实现&&
&&& 10.6.1搜索操作的实现&&&&&
&&& 10.6.2插入操作的实现&&&&&
&&& 10.6.3删除操作的实现&&&&&
&&& 10.6.4便利方法与遍历&&&&&
& 10.7 AVL树&&&&&&&&&&
&&& 10.7.1 AVL树结构&&&&&&&
&&& 10.7.2搜索、插入和删除操作概述
&&& 10.7.3旋转操作&&&&&&&&
&&10.7.4插入操作&&&&&&&
& 10.7.5删除操作&&&&&&&
& 10.7.6 AVL树操作的运行时间&
& 10.7.7 AVL插入和删除:一般化
& 10.8& 分搜索:平均比较次数&
& 10.9总结&&&&&&&&&&
& 10.10练习&&&&&&&&&&
& 10.11程序设计问题&&&&&&
第1l章堆&&&&&&&&&&
& 11.1作为优先队列的堆&&&&
& 11.2堆的性质&&&&&&&&
& 11.3堆的操作&&&&&&&&
& 11-3.1插入操作&&&&&&&
& 11.3.2删除操作&&&&&&&
& 11.3.3运行时间分析&&&&&
& 11.4类Heap&&&&&&&&&
& 11.5使用堆的优先调度&&&&
&&& 11.5.1纵览&&&&&&&&&
&&& 11.5.2使用堆的调度包&&&&
& 11.6使用类Heap的排序&&&
& 11.7类Heap的实现&&&&&
&&& 11.7.1数组存储&&&&&&
&&& 1 1.7.2使用ArrayList的实现&
& 11.8可更新堆&&&&&&&
&&& 11.8.1设计一个可更新堆&&
&&& 11.8.2堆项的旬柄&&&&&
&&& 11.8.3共享句柄数组&&&&
&&& 11.8.4在堆中封装句柄&&&
&&& 11.8.5循环使用空闲句柄空间
& 11.9总结&&&&&&&&&
& 11.10练习&&&&&&&&&
& 11.1l程序设计问题&&&&&
第12章散列表&&&&&&&
& 12.1动机&&&&&&&&&
& 12.2散列&&&&&&&&&
& 12.3中突解决方案&&&&&
&&& 12.3.1线性探查法&&&&
&&& 12.3.2二次探查法&&&&&
&&& 12.3.3链表法&&&&&&&
&&& 12.3.4运行时间比较&&&&
& 12.4类java.util.HashMap&&&
&&& 12.4.1表和负载因子&&&&&&
&&& 12.4.2项的存储&&&&&&&&
&&& 12.4.3添加项&&&&&&&&&
&&& 12.4.4再散列过程&&&&&&&
&&& 12.4.5搜索操作&&&&&&&&
&&& 12.5& 次探查法:探查位置的重复
&&& 12.6总结&&&&&&&&&&&
&&& 12.7练习& &&&&&&&&&&&
&&& 12.8程序设计问题&&&&&&&
& 第13章排序&&&&&&&&&
&&& 13.1插入排序&&&&&&&&&
&&& 13.2用分治法排序&&&&&&&
&&& 13.2.1快速排序&&&&&&&&
&&& 13.2.2归并排序&&&&&&&
&&& 13.3堆排序&&&&&&&&&
&&& 13.3.1以线性时间构建堆&&&
&&& 13.3.2排序堆&&&&&&&&
&&& 13.4基数排序&&&&&&&&
&&& 13.5实现:类Quicksort&&&&
&&& 13.6构建堆:线性运行时间&&
&&& 13.7总结&&&&&&&&&&
&&& 13.8练习& &&&&&&&&&&
&&& 13.9程序设计问题&&&&&&
&&& 第14章图I:算法&&&&&&&
&&& 14.1使用图模拟关系&&&&&
&&& 14.1.1无向图&&&&&&&&
&&& 14.1.2有向图&&&&&&&&
&&& 14.1.3加权图&&&&&&&&
&&& 14.2图的表示&&&&&&&&
&&& 14.3图的遍历&&&&&&&&
&&& 14.3.1无向图的深度优先搜索&
&&& 14.3.2无向图的广度优先搜索&
&&& 14.3.3遍历驱动器&&&&&&
&&& 14.3.4有向图的遍历&&&&&
&&& 14.4有向图的拓扑排序&&&&
&&& 14.4.1偏序和全序&&&&&&
&&& 14.4.2拓扑编号&&&&&&&
&&& 14.4.3使用深度优先搜索的拓扑
&&& 排序&&&&&&&&&
&&& 14.4.4使用广度优先搜索的拓扑
&&& 排序&&&&&&&&&
&&& 14.5无向图的连通分支&&&&&
&&& 14.6加权有向图中的最短路径&&
&&& 14.7总结&&&&&&&&&&&
&&& 14.8练习&&&&&&&&&&&
&&& 第15章图II:实现&&&&&&&&
&&& 15.1有向图类:DirGraph&&&&&
&&& 15.1.1顶点编号&&&&&&&&
&&& 15.1.2类Neighbor&&&&&&&
&&& 15.1.3运用类DirGraph&&&&&
&&& 15.2无向图类:UndirGraph&&&&
&&& 15.3深度优先搜索类:DFS&&&&
&&& 15.3.1设计与接口&&&&&&&
&&& 15.3.2类Visitor&&&&&&&&
&&& 15.3.3 DFS的实现&&&&&&&
&&& 15.4拓扑排序类:DFSTopsort&&
&&& 15.4.1 TopVisitor:扩展类Visitor&
& 15.4.2 DFSTopsort的实现&&&
15.5连通分支类&DFSConncomp
& 15.5.1 ConnVisitor:扩展类Visitor
& 15.5.2 DFSConncomp的实现&&
15.6最短路径类:ShortestPaths&
& 15.6.I WeightedNeighbor:扩展类
&&& Neighbor
& 15.6.2 ShortestPaths的实现&&
& 15.7图的实现&&&&&&&&
& 15.7.1 DirGraph的实现&&&&
& 15.7:2类UndirGraph的实现&&
& 15.7.3加权图的实现&&&&&
& 15.8总结&&&&&&&&&&
& 15.9程序设计问题&&&&&&
索引&&&&&&&&&&&&&&&
客服专线:010- 客服邮箱:
Copyright & 北发图书网 2007,
All Rights Reserved
北京北发电子商务股份有限公司 版权所有

我要回帖

更多关于 java实现递归树形结构 的文章

 

随机推荐