顺序表的类型说明和操作.pptx

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

;;2. 求表长 length_sqlist(l) 定义 求线性表的元素个数 基本思想 l.last 就表示了线性表的长度 算法 int length_sqlist(sqlist l) { return (l.last); };3. 读表元 get_sqlist(l,i) 定义 求线性表 l 的第 i 个数据元素的值 基本思想 数组第i-1个单元就存放着线性表的第i个元素 算法 datatype get_sqlist(sqlist l ,int i ) { return (l.data[i-1]); };4. 定位 locate_sqlist(l,x) 定义 求线性表 l 中值等于 x 的结点序号的最小值,当不存在时结果为 0 基本思想 从前往后依次比较各结点值是否等于x 算法 int locate_sqlist(sqlist l, datatype x) { int i=0; /*从第一个开始查找*/ while ( (i=l.last-1) (l.data[i]!=x) ) i++; /*当前没有找到,继续试下一个*/ if (i=l.last-1) return(i+1); /*在范围内,i+1为结果,注意C语言的数组是从0开始的*/ else return (0); } ;5. 插入 insert_sqlist(l,x,i) 定义 线性表的插入操作是指在表的第i-1个数据元素和第i个数据元素之间插入一个新的 数据元素 (a1,…,ai-1,ai,…,an) = (a1,…,ai-1,x,ai,…,an) 数据ai-1和ai之间的逻辑关系发生了变化 由于逻辑上相邻的数据元素在物理位置上也是相邻的,因此,除非i=n+1,否则必须移动元素才能反映这个逻辑关系的变化。; ;算法 void insert_sqlist(sqlist l,datatype x,int i) { int j; if ( l.last==maxsize) printf(“表满”); /*表容量已到最大值,无法插入*/ else if ( (il.last+1) || (i1) ) printf(“非法位置”); /*要求插入的位置不合法,无法插入*/ else {for (j=l.last-1;j=i-1;j--) /*从最后一个元素到第i个元素*/ l.data[j+1]=l.data[j]; /*当前元素后移一位*/ l.data[i-1]=x; /*把x放入第i位*/ l.last++; /*表长加1*/ } } ;6. 删除 delete_sqlist(l,i) 定义 线性表的删除操作是指将表的第i个数据元素删除,使长度为n的线性表: (a1,…,ai-1,ai,ai+1,…,an) 变成长度为n-1的线性表 (a1,…,ai-1,ai+1,…,an) 数据元素ai-1、ai、ai+1之间的逻辑关系发生了变化,和插入操作一样同样需要移动数据元素,除非删除的是最后一个元素。; ;算法 void delete_sqlist(sqlist l, int i) {int j; if (l.last==0) printf(“表空”); /*空表无法删除*/ else if ( (il.last) || (i1) ) printf(“非法位置”); /*位置不合法,无法删除*/ else {for(j=i;j=l.last-1;j++) /*从第i+1个元素到最后一个元素*/ l.data[j-1]=l.data[j]; /*当前元素前移一位*/ l.last--; /*表长减1*/ } }

文档评论(0)

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

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

1亿VIP精品文档

相关文档