数据结构(严蔚敏)Chapter5 Linked Lists.pptVIP

数据结构(严蔚敏)Chapter5 Linked Lists.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Data Structures and Algorithms with Java Chapter 5 Linked Lists 第2章中,我们看到数组作为数据存储结构有一定的缺陷: In an unordered array, searching is slow, whereas in an ordered array, insertion is slow. In both kinds of arrays deletion is slow. Also, the size of an array can’t be changed after it’s created. 无序数组,搜索效率低;有序数组,插入效率低。 删除效率低 数组大小固定,空间浪费 本章中,我们介绍一种新的数据结构—链表,是与数组一样广泛使用的结构。链表机制灵活,用途广泛,适用于许多通用的数据库。 ① 链结点Links 基本概念 在链表中,每个数据项都被包含在“链结点”(Link)中 一个链结点是某个类的对象,这个类可以叫做Link 每个Link对象中都包含一个对下一个链结点引用的字段(Next) 链表本身的对象中有一个字段指向对第一个链结点的引用 引用和基本类型 double salary = 65000.00; 内存空间中存储其实实在在的数值 a reference to an object, like Link someLink = new Link(); Link aLink = someLink; 内存中存储对象的地址 关系,而不是位置 链表与数组的主要区别:关系 vs. 位置 数组:每一项占用一个特定的位置,这个位置可以用一个下标号直接访问。 链表:寻找一个特定元素的唯一方法就是沿着这个元素的链一直向下寻找。访问数据项 不能直接,必须使用数据之间的关系来定位它。 ② 单链表 A Simple Linked List Applet示例程序 linkList.java,显示了一个单链表。这个链表仅有的操作是: 在链表头插入一个数据项 在链表头删除一个数据项 遍历链表显示它的内容 在着手完成linkList.java程序前,先看一下Link类和LinkList类中比较重要的部分。 Link类 LinkList类 insertFirst() deleteFirst()等方法 LinkList类 insertFirst() 该方法在表头插入一个新链结点。其过程如下: deleteFirst() displayList() 为了显示链表,从first开始,沿着引用链从一个链结点到下一个链结点。 引入临时变量current按顺序指向每一个链结点。 current首先指向first; 利用“current = current.next;” 改变current,指向下一个链结点; linklist.java 程序 ③ 查找和删除指定链结点 linkList2.java增加了两个方法 find():在链表中查找包含指定关键字的链结点 delete():删除包含指定关键字的链结点。 delete() 方法 ④双端链表Double-Ended Lists A double-ended list is similar to an ordinary linked list, but it has one additional feature: a reference to the last link as well as to the first. insertFirst()方法 insertLast()方法 deleteFirst()方法 ⑤ 链表的效率 Linked-List Efficiency 在表头插入和删除速度很快,仅需要改变一两个引用值,所以花费O(1)的时间。 平均起来,查找、删除和在指定链结点后面插入都需要搜索链表中一半的链结点。需要O(N)次的比较。数组中也需要O(N)次,但链表仍然要快一些,因为插入删除过程中,链表不需要移动任何东西。 链表可变长,而数组大小固定:链表比数组优越的另外一个重要方面是链表需要多少内存就可以用多少内存,并可以扩展到所有可用内存 ⑥ 抽象数据类型 Abstract Data Types 抽象数据类型(ADT) 它是一种考虑数据结构的方式,着重于它做了什么,而忽略了它是怎么做的。 数据类型和抽象 a data item with certain characteristics, and permissible operations on that data. 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 面向对象编程,可以用类来创建自己的数据类型(字段)和数据上允许的

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档