- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课件(第二章)
第二章 链表 西安工程大学 计算机科学学院 第2章 线性表 2.1 线性表的概念及运算 2.2 线性表的顺序存储 2.3 线性表的链式存储 2.4 一元多项式的表示及相加 2.1 线性表的概念及运算 2.1.1 线性表的逻辑结构 2.1.2 线性表的抽象数据类型定义 线性表的定义 线性表(Linear List)是由n (n≥0)个类型相同的数据元素a1,a2,…,an组成的有限序列,记做(a1,a2,…,ai-1,ai,ai+1, …,an)。 数据元素之间是一对一的关系,即每个数据元素最多有一个直接前驱和一个直接后继。 线性表的逻辑结构图为: 线性表的特点 同一性:线性表由同类数据元素组成,每一个ai必须属于同一数据对象。 有穷性:线性表由有限个数据元素组成,表长度就是表中数据元素的个数。 有序性:线性表中相邻数据元素之间存在着序偶关系ai,ai+1。 2.1.2 线性表的抽象数据类型定义 ADT LinearList { 数据元素:D={ai| ai∈D0, i=1,2,…,n ≥0 ,D0为某一数据对象} 关系:S={ai,ai+1 | ai, ai+1∈D0,i=1,2, …,n-1} 基本操作: (1)InitList(L) 操作前提:L为未初始化线性表。 操作结果:将L初始化为空表。 (2)DestroyList(L) 操作前提:线性表L已存在。 操作结果:将L销毁。 (3)ClearList(L) 操作前提:线性表L已存在 。 操作结果:将表L置为空表。 ………}ADT LinearList 2.2 线性表的顺序存储 2.2.1 线性表的顺序存储结构 2.2.2 线性表顺序存储结构上的基本运算 顺序存储结构的定义 线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。采用顺序存储结构的线性表通常称为顺序表。 假设线性表中每个元素占k个单元,第一个元素的地址为loc(a1),则第k个元素的地址为: loc(ai) =loc(a1)+(i-1)×k 顺序存储结构示意图 顺序存储结构的C语言定义 #define maxsize=线性表可能达到的最大长度; typedef struct { ElemType elem[maxsize]; /* 线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组 elem[ ] 中的位置(下标值),空表置为-1*/ } SeqList; 注意区分元素的序号和数组的下标,如a1的序号为1,而其对应的数组下标为0。 2.2.2 线性表顺序存储结构的基本运算 线性表的基本运算: 查找操作 插入操作 删除操作 顺序表合并算法 线性表顺序存储结构的优缺点分析 查找操作 按序号查找GetData(L,i):查找线性表L中第i个数据元素,其结果是L.elem[i-1]或L-elem[i-1]。 按内容查找Locate(L,e): 查找线性表L中与给定值e相等的数据元素,若在表L中找到与e相等的元素,则返回该元素在表中的序号;若找不到,则返回一个“空序号”,如-1。 线性表的查找运算算法: int Locate(SeqList L,ElemType e) { i=0 ; / *i为扫描计数器,初值为0,即从第一个元素开始比较*/ while ((i=L.last)(L.elem[i]!=e) ) i++; /*顺序扫描表,直到找到值为key的元素,或扫描到表尾而没找到*/ if (i=L.last) return(
您可能关注的文档
最近下载
- 小学数学名师工作室年度工作计划 .docx VIP
- 青少年保健专科建设和管理指南.pptx
- LNG购销总协议-中英文对照.pdf
- 全球及中国婴幼儿辅食行业蓝皮书-CIC灼识咨询-2025.pptx
- 2025中国南水北调集团新能源投资有限公司第一批中层及职员岗位社会招聘模拟试卷含答案解析.docx VIP
- 2025中国南水北调集团新能源投资有限公司第一批中层及职员岗位社会招聘模拟试卷含答案详解.docx VIP
- 部编版五年级语文上册语文园地三.ppt VIP
- 食材配送应急预案.docx VIP
- 《GBT 97.4-2002 平垫圈用于螺钉和垫圈组合件》知识培训.pptx VIP
- 现代化工导论 课件(化工)第10章.pptx VIP
文档评论(0)