第2章线性表和链表讲述.pptx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章线性表和链表讲述

第2章 线性表和链表 1 4中常见的数据逻辑结构:集合、线性、树形、图形; 4种数据存储结构:顺序、链式、索引、散列 第2页 主要内容 第3页 线性表 1 顺序表 2 JAVA类库中的顺序表 3 单链表 4 双向链表 5 循环链表 6 线性表的定义 线性表(Linear List)是一种可以在任意位置进行插入和删除数据元素操作的、由n(n=0)个相同类型数据元素a0,a1,……,ai,……an-1组成的一个有限序列,可表示为:( a0,a1,……,ai,……an-1)。 线性表的长度、空表、表头元素、表尾元素、前驱、后继; 用二元组表示为linear_list=(A,R) A={ai|0=i=n-1,n0,ai?ElemType}; R={r},r={ai,ai+1|0=i=n-1}。 第4页 线性表的抽象数据类型 数据集合 操作集合 添加:在线性表的末尾添加一个数据元素; 插入:在线性表的第i个元素前插入一个数据元素; 删除:删除第i个数据元素; 获取:获取第i个数据元素; 遍历线性表:从第一个元素开始,访问表中每个数据元素; 获取数据元素个数; 判断线性表是否为空。 第5页 顺序表 线性表的存储结构为顺序结构,该线性表叫做顺序表。 顺序表的存储结构:数据元素占据内存中一片连续的存储单元。 第6页 …… 2 a0 3 a1 4 a2 5 a3 6 a4 …… 地址 …… 2000 2002 2004 2006 2008 …… 顺序表 顺序表的操作 插入:将数据元素插入顺序表指定的位置i处; 删除:将指定位置i处的数据元素删除; 查询:查询指定位置的数据元素,或者查询指定关键字的数据元素。 第7页 实例 例题2-1:对学生信息进行管理,要求对学生信息记录进行添加、查询和浏览操作,学生信息包括姓名、学号和成绩3个字段。 第8页 顺序表的性能分析 支持顺序存取,读取数据元素操作的时间复杂度为o(1); 在顺序表中插入和删除一个数据元素的时间复杂度为o(n); 缺点:需要预先给出表中数据元素的个数,插入和删除数据时,需要移动大量的数据元素。 第9页 2.3 JAVA类库中的顺序表 类ArrayList: 使用类ArrayList对学生信息进行管理; 第10页 链表 学号 姓名 性别 入学成绩 学号 姓名 性别 入学成绩 201001 吴承志 男 487 201006 何文颖 女 458 201002 李淑芳 女 450 201007 赵胜利 男 456 201003 刘丽 女 423 201008 崔文靖 女 478 201004 张会友 男 465 201009 刘丽 女 432 201005 石宝国 男 485 201010 魏永鸣 男 412 第11页 吴承志 …… 李淑芳 …… 刘丽 …… 张会友 2000 2080 2100 2300 2.4 单链表 第12页 d d d d ? head 单链表的操作 插入 删除 查询:从第一个结点开始,逐个访问每个结点,比对关键字; 遍历:从链表的头结点开始,逐个访问每个结点,并输出结点信息. 第13页 单链表的性能 可以任意的增加节点,删除节点和添加节点时不需要大量的移动数据; 不支持随机读取,查找(删除、插入)节点时需要遍历链表; 一旦链表中的指针断开,链表就丢失。 第14页 2.5 双向链表 第15页 1.节点:指针域有两个:一个指向其前驱,一个指向其后继; 2.链表:有一个指向表头的指针(head),一个指向表尾的指针(tail)。 双向链表的操作 第16页 1.插入(头节点前、尾节点后、两个节点间) 双向链表的操作 插入(头节点前、尾节点后、两个节点间) 第17页 第18页 插入(头节点前、尾节点后、两个节点间) 双向链表的操作 2. 删除(头节点、尾节点、中间节点) 第19页 第20页 双向链表的操作 3.查询:根据关键字查询一个节点。 4.遍历:从双向链表的头节点或尾节点开始,逐个输出各个节点的信息。 第21页 双向链表的实现 在双向链表的尾结点添加一个结点,遍历链表,根据姓名查找结点。 1.定义节点(StudNode) 2.定义链表(StudOperation、StudLinkedList) 3.链表的实现(StudLinkedListUser) 第22页 2.6 循环链表 循环单链表 有一个头指针head、一个尾指针tail; 尾结点的指针域指向头结点; 第23页 循环链表 循环双链表 有一个头结点head,一个尾结点tail; 头结点指向前驱的指针域指向尾结点,尾结点指向后继的指针域指向头结点。 第24页

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档