数据结构第4.5.6讲线性表.ppt

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

不同的数据结构其操作集不同,但下列操作必不可缺: 1.结构的生成; 2.结构的销毁; 3.在结构中查找满足规定条件的数据元素; 4.在结构中插入新的数据元素; 5.删除结构中已经存在的数据元素; 6.遍历。 3.1 线性表的基本概念及运算 线性表是由n(n≥0)个数据元素a1a2…an 组成的一个有限序列。表中的每一个数据元素,除了第一个外,有且只有一个前件(直接前趋);除了最后一个外,有且只有一个后件(直接后继)。即线性表或是一个空表,或可以表示为:(a1,a2,…,ai,…,an) 其中ai (i = 1,2,…,n)是属于数据对象的元素,通常也称其为线性表中的一个结点。 线性表的长度及空表定义: 线性表中数据元素的个数n(n≥0)定义为线性表的长度。 当线性表的长度为0 时,称为空表。 ai 是第i个数据元素,称i为ai 在线性表中的位序。 例3.1-1:某班的学生情况登记表, 如表所示。 学生情况登记表中每一个学生的情况称为一个记录,或者结点。 6. Insert(L,x,i) 插入,在L中第i个位置前插入值为x的元素。使得原编号为i,i+1,…n的数据元素变为编号为i+1,i+2,…,n+1的数据元素。表长加1。 7. Delete(L,i) 删除,删除表L中第i个数据元素。使得原编 号为i+1,i+2,…,n 的数据元素变为编号为i,i+1,…n的 数据元素。表长减1。 8. Prior(L,ai) 取直接前趋,取ai的直接前趋元素的值,且2=i=n,则存在前驱结点。 9. Next(L,ai) 取直接后继,取ai的直接后继元素的值,且1=i=n-1 ,则存在后继结点。 说明: (1) 每个基本运算用一个函数来表示。 (2) L是指向线性表结构的指针。 void purge (sequenlist *L) { i=1, j; //位序的初值为1 datatype x, y; while (iLength(L)) //每次循环使当前第i结点是无重复值的结点 { x=Get(L,i); //取ai赋给x j=i+1; while(j=Length(L)) //将ai之后的各结点aj与ai比较,若aj 与ai相同, 则删除aj { y=Get(L,j); //取aj赋给y if(x= =y) Delete(L,j); //相同,删除aj else j++; //不同,准备取下一个aj } i++; } } 3.2 顺序表 3.2.1 顺序表的定义 线性表的一种最简单的存储方法是顺序存储,也称为顺序分配,即在计算机内存中用一组地址连续的存储单元依次存储线性表中的各个数据元素,称为线性表的顺序存储结构。顺序存储的线性表简称为顺序表。 线性表的顺序存储结构具有以下两个基本特点: ① 线性表中所有元素所占的存储空间是连续的。 ② 线性表中各数据元素在存储空间中是按逻辑顺序依次 存放的。 假设线性表的每个数据元素需占用C个存储单元,并以所占的第一个单元的存储地址作为数据元素的起始存储位置,则线性表的第i个元素ai的存储位置为: Loc(ai) = Loc(a1)+(i-1)*C 其中Loc(a1)是顺序表的第一个数据元素a1的存储位置,通常称作顺序表的起始位置或基地址。 线性表中第i+1个数据元素的存储位置Loc(ai+1)和第i个数据元素的存储位置Loc(ai)之间满足下列关系: Loc(ai+1) = Loc(ai)+C 1≤i≤n 根据线性表的顺序存储结构的特点,只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取,所以,线性表的顺序存储结构是一种随机存取的存储结构,可以对顺序表进行顺序存取或随机存取。 void purge (sequenlist *L) { int i=1, j, k ; /*位序的初值为1*/ while (iL-last) /*每次循环使当前第i结点是无重复值的结点*/ { j=i+1; while(j= L-last) /*将ai之后的各结点aj与ai比较,若aj 与ai相 同,则删除aj */

文档评论(0)

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

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

1亿VIP精品文档

相关文档