第2课--线性表及其顺序存储结构讲解.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性表的ADT定义 ADT Liner_list { 数据对象定义:D={ei|ei∈ElemType 0≤i ≤ n n≥0} 数据关系定义:R={ei-1,ei| ei-1,ei ∈D 2≤i ≤ n } 数据运算定义:(一组操作说明) 初始化线性表Initlist(L) 求线性表的长度Getlen(L) 取第i个元素Getelem(L,i): 插入元素InsElem (L,i,x) 删除元素Delelem(L,i) 清空表 ClearList(L) 释放表Destroy(L) 2.2 线性表的顺序结构及实现 2.2.1 线性表的顺序静态结构及实现 2.2.1 线性表的顺序静态结构及实现 2.2.1 线性表的顺序静态结构及实现 3.按序号取元素GetElem(L,i)的实现 根据约定,序号为i的元素存储在数组下标为i-1的数组元素中,所以可直接从该数组元素中取得值。i的有效值应大于等于1和小于等于线性表的实际长度。 ElemType GetElem(sqLlist *L,int i) { if (i1 || iL-length) /*判断参数是否合法*/ { printf(“error”); exit(1); } return L-data[i-1]; } 2.2.1 线性表的顺序静态结构及实现 例:在线性表(a1,a2,…,ai-1,ai,ai+1,…,an )第 i个位置插入x (i的取值范围为1≤i≤n+1 ): 插入算法步骤描述: 1.判断参数i是否合法,合法则继续 2.判断表是否已满,未满则继续 3.由最后一个元素开始依次将第i个位置后的元素后移 (索引 length-1至i-1) 4.将新元素保存到第i个位置(i-1处) 5.修改线性表长度(length+1) 2.2.1 线性表的顺序静态结构及实现 插入算法描述: void InsertElem(sqList *L,int i,Elemtype x) { if (i1 || iL-length+1) { printf(“Error!”) ; //插入位置出错 exit(1); } if(L-length==MaxLen) { printf(“overflow!”) ; //表已满 exit(1); } for(j=L-length;j=i;j--) L-data[j+1]=L-data[j]; //数据元素后移 L-data[i]=x; //插入x L-length++; //表长度加1 } 2.2.1 线性表的顺序静态结构及实现 6.顺序表的删除运算DeleElem(L,i)的实现 顺序表的删除运算是指将表中第 i 个元素从线性表中去掉. 对表长为 n 的线性表: (a1,a2,… ,ai-1,ai,ai+1,…,an) 进行删除操作后变为表长n-1的表 (a1,a2,… ,ai-1,ai+1,… ,an), i 的合理取值范围为:1≤i≤n 。 图2-5 线性表中的删除运算示意图 2.2.1顺序结构线性表-删除算法 算法实现: 2.2.2 线性表的顺序动态结构及实现(重点) 静态结构,数据表存储空间静态分配,不能改变 #define MaxLen 100 //线性表的最大容量 typedef struct { ElemType data[MaxLen]; //存储表元素的数组,空间在编译时分配 int length; //线性表的实际长度 } sqList; 2.2.2 线性表的动态结构及实现 教材算法2.3 的C程序实现2 /*构造一个空的线性表L,成功返回ok*/ Status In

文档评论(0)

美洲行 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档