- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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页
您可能关注的文档
- 第2章电磁场基本方程--4讲述.ppt
- 第7章VISSIM车速控制及优先权分配详解.ppt
- 第六章化工管路详解.ppt
- 第六章环境污染生物监测详解.ppt
- 第7章Windows用户界面设计详解.ppt
- 第2章电工电子讲述.ppt
- 第2章电磁学原理讲述.ppt
- 第7章编码与测试详解.ppt
- 第2章直流电机的建模与特性讲述.ppt
- 第六章计算机系统安全_自学_详解.ppt
- 中国行业标准 DB/T 100-2024区域性地震安全性评价.pdf
- 《GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架》.pdf
- GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架.pdf
- DB/T 100-2024区域性地震安全性评价.pdf
- 中国行业标准 GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架.pdf
- 校园周边书店阅读氛围对初中生阅读素养提升的影响研究教学研究课题报告.docx
- 初中校园餐饮卫生监管与食品安全教育创新模式研究教学研究课题报告.docx
- 《文化遗产保护与旅游开发平衡机制的法律法规完善研究》教学研究课题报告.docx
- 《农作物病虫害生物防治技术的经济效益与社会影响分析》教学研究课题报告.docx
- 1 剖宫产术后子宫瘢痕憩室治疗中的并发症预防与护理措施教学研究课题报告.docx
文档评论(0)