第2章 线性表-顺序表.pptVIP

  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文档。上传文档
查看更多
第2章 线性表 2.1 线性表的逻辑结构 2.1.1 线性表的定义 1、定义:线性表是相同数据类型的n个数据元素的有限序列。 A=(a1,a2,…ai,ai+1,……,an) a1为第一个元素,称表头元素; an为最后一个元素,称表尾元素; n 表示线性表A的长度,当n=0时,表示A是空表。 当1in时: ai的直接前驱是ai-1,a1无直接前驱。 ai的直接后继是ai+1,an无直接后继。 2.1.1 线性表的定义 2、线性表结构举例: 例1 L1=(‘a’,’b’,’c’,’d’,’e’,……’z’)。数据元素为英文字母 例2 L2=(23,34,56,545,44,98)。数据元素为整数。 例3 L3=(“SHE”,”WE”,”ARE”,”LIST”)。数据元素为字符串。 例4 L4=((“001”,”张晴”,18), (“002”,“李利”,19),……)。数据元素为各数据项组成的学生信息。 2.1.1 线性表的定义 3、线性结构特点:在数据元素的非空有限集中 存在唯一的一个被称作“第一个”的数据元素 存在唯一的一个被称作“最后一个”的数据元素 除第一个外,集合中的每个数据元素均只有一个前驱 除最后一个外,集合中的每个数据元素均只有一个后继 2.1. 2 线性表的基本操作 (1)线性表的初始化:Init_List(L) 初始条件:表L不存在 操作结果:构造一个空的线性表 (2)求线性表的长度:Length_List(L) 初始条件:表L存在 操作结果:返回线性表中所含元素的个数 2.1. 2 线性表的基本操作 (3)取表中元素:Get_List(L,i) 初始条件:表L存在,且1≤ i≤Length_List(L) 操作结果:返回线性表L中的第i个元素的取值或地址 (4)按值查找:Locate_List(L,x) 初始条件:表L存在 操作结果:在L表中查找值为x的数据元素,查找成功时,返回在L中首次出现的、值为x的数据元素的序号或地址;否则,返回一个特殊值表示查找失败。 2.1. 2 线性表的基本操作 (5)插入操作:Insert_List(L,i,x) 初始条件:表L存在,且插入位置正确 1≤i≤Length_List(L)+1 操作结果:在线性表L中的第i个位置上插入一个值为x的新元素,插入后表长为原表长加1。 2.1. 2 线性表的基本操作 (6)删除操作:Delete_List(L,i) 初始条件:表L存在,且1≤i≤Length_List(L) 操作结果:插入位置1≤i≤表长,在线性表L中删除第i个位置上的数据元素,删除后表长为为原表长减1。 2.2 顺序表 1. 顺序表的定义 (1)定义:用一组地址连续的存储单元存放一个线性表。 用这种存储形式存储的线性表称为顺序表。 (2)元素地址计算方法 2. 顺序表的特点 3. 顺序表的结构定义 (4)线性表的顺序存储结构的描述 2.2.2 顺序表上基本运算 的实现 1. 顺序表的初始化 输入各个元素值 void CreateList(SeqList *L,int n) {int i; printf(请输入各个元素值:\n); for(i=0;in;i++) scanf(%d,,L-data[i]); L-Length=i; /*注意,此命令行不属于for的循环体,length=n*/ } 2.插入运算 2.插入运算 2.向顺序表的位置i插入值x if (i == L-Length+1) { L-data[i-1]=x; L-Length++; return OK; /*插入的位置为表尾,则不需移动直接插入即可*/ } for (j=L-Length-1; j=i-1; j--) /*结点移动*/ L-data[j+1]=L-data[j]; L-data[i-1]=x; /*新元素插入*/ L-Length++; /*顺序表长度增1 */ return OK; /*插入成功,返回*/ } 2.插入运算 算法时间复杂度分析: 设Pi是在第i个元素之前插入一个元素的概率,则在长度为n的线性表中插入一个元素时,所需移动的元素次数的平均次数为: 3.删除运算 3.删除运算 3.删除

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档