ch2-线性表(old).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 线性表 第二章 线性表 2.1 线性表的定义和运算 2.2 顺序表 2.3 链表 2.4 其它结构形式的链表 2.5 串 2.1 线性表的定义和运算 2.1.1 线性表的定义: 定义: 线性表L是由n个元素a1,a2,……,an组成的 有限 序列。 记作 L =(a1,a2,……,an) 其中n=0为表长度; n=0时L为空表,记作L=() 表中元素ai的含义:在不同的场合有不同的含义。 但是,在同一表中,元素类型相同。 例:字母表(A,B,C,D,……,Z); 数字表(0,1,2,3,4,……,9); 月份表 (1月,2月,…,12月); 季节表 (春,夏,秋,冬) 学生成绩表,其中每个元素就是一个人的成绩信息。 特性: 只有一个首元素和一个尾元素; 除首元素外其他元素有且仅有一个直接前趋; 除尾元素外其他元素有且仅有一个直接后继 ; 2.1 线性表的定义和运算 2.1.2 线性表的运算 对线性表有如下基本运算: (1)初始化:initialList(L) 创建一个空的线性表,使用线性表必经过程。 (2)求表长度:listLength(L) 返回线性表中的元素个数。 (3)按序号取元素:getElement( L, i ) 从线性表中取出序号为 i 的数据元素。 前提:1=i=n, 即存在该元素。否则,应当如何处理? (4)按值查找元素:listLocate(L,x) 在线性表中查找给定值的元素 x 所在的位置。 若不存在,应如何给出相关信息? (5)插入元素:listInsert(L, i, x) 在线性表中给定的位置 i 处,插入给定值的元素 x。 前提:1=i=n+1,即插入位置有效,否则如何处理? (6)删除元素:listDelete(L,i) 删除线性表种指定序号 i 处的元素。 前提:1=i=n, 即存在该元素。否则,应当如何处理? 借助这些基本元算可以构造出更加复杂的运算。 例:删除 x 元素—可先用listLocate(L,x)找出元素x的位置 i,再用listDelete(L,i)进行删除。 例:表的遍历、两表合并为一表,… 2.2 顺序表 2.2.1 存储结构: 假设有一个足够大的连续存储空间(数组)data, 用于存储线性表的元素。 则将线性表中的元素依次存储到数组中----顺序存储方式, 由此得到顺序表。 如下图所示: 其中,设置一个计数变量ListLen ,以记录表中的元素个数。 将数组data和listLen作为顺序表的数据成员。 2.2 顺序表 顺序表类型描述 #define MaxLen 100 //元素个数最大100个 typedef struct { elementType data[MaxLen]; //定义存储表中元素的数组 int listLen; // 定义长度分量 }seqList; 注:元素的类型这里用elementType,实际中视实际情况用具体的类型来替换,如:int等。 2.2 顺序表 使用typedef 把 seqList定义为一种数据类型,我们可以使用此类型来定义变量 例:seqList L1, *L2; seqList分量的使用方式 上例中,L1是seqList型的结构变量,分量的引用方法:L1.listLen;L1.data[i] L2为seqList型的结构指针变量,分量的引用方法:L2-listLen; L2-data[i] 说明:顺序表元素下标和数组data的下标相差1。 表元素下标从1开始; 数组d

文档评论(0)

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

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

1亿VIP精品文档

相关文档