第3章 线表及其存储结构.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习要求 通过本单元的学习,了解并掌握: ?线性表的基本概念 ?线性表的常用存储结构 顺序、链表、索引、散列存储结构 单向、双向、循环链表等 ?线性表的有关算法 增、删、改 第3章 线性表及其存储结构 教学目标: ? 了解线性表的有关概念 什么线性表 ? 了解线性表的特点 ? 了解线性线的逻辑结构、物理结构以及操作 一、线性表的基本概念 是指数据元素之间的关系为一一对应的线性关系的数据结构。例如,一星期七天的英文缩写表示: (Sun,Mon,The,wed,Thu,Fri,Sat) 是一个线性表,其中的元素是字符串,表的长度为7。 线性表虽然简单,但是应用范围非常广泛。 (一)线性表的逻辑结构 定义: 线性表是n(n?0)个元素a1,a2,…,an 的有限序列;表中每个数据元素,除了第1个和最后1个外,有且仅有一个前趋元素和后继元素。 形式定义: 含有n个数据元素的线性表是一种数据结构,表示为: Linear_list=( D , R ) 其中: D={ai | ai?D0,i=1,2,3,…,n,n ?0} R={N}, N={ai-1,ai|ai-1,ai ?D0 ,i=1,…,n} D是数据元素的有限集合,R是D上逻辑关系的有限集合。关系N是一个有序偶对的集合。 相互关系描述 1)L的长度为n(n ?0),当n为0时, 表示是空表; 2)每个元素(除了第1个和最后一个元素 外),有唯一的前趋和后继; 3)线性表中各元素间存在着线性关系; 4)均匀性;各元素数据类型必须相同; 5)有序性;各元素是有序的,不可交换次序。 线性表的基本操作 Setnull(L) 置空表 Length(L) 求表长度;求表中元素个数 Get(L,i) 取表中第i个元素(1?i ?n) Prior(L,i) 取i的前趋元素 Next(L,i) 取i的后继元素 Locate(L,x) 返回指定元素在表中的位置 Insert(L,i,x)插入元素 Delete(L,x) 删除元素 Empty(L) 判别表是否为空 (二)线性表的顺序存储及运算 将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构是顺序结构。 采用顺序存储结构的线性表简称为“顺序表”。顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到: LOC(ai)=LOC(a1)+(i-1)*L 1?i ?n 其中,L是元素占用存储单元的长度。 线性表元素存储示意图 线性表的顺序存储 在程序设计语言中,通常定义一个一维数组来表示线性表的顺序存储空间。 应注意数组的基本类型要与线性表中数据元素的类型相同。 数组需要根据情况预设足够的大小,同时还需要一个变量指出线性表在数组中的当前状况,如元素个数或最后一个元素在数组中的位置等。这两方面的信息共同描述一个顺序表,可将它们封装在一起。对C语言,顺序表可定义如下: 线性表的顺序存储 对C语言,顺序表可定义如下: #define MaxLength 50 typedef int ElemType; typedef struct { ElemType list[MaxLength]; int length; } SeqList; 今后使用此定义时,MaxLength及ElemType要根据实际问题的需要可重新选定。 算法1-1 插入算法 算法步骤: step1 将第n至第i个元素后移一个存储位置; step2 将x插入到ai-1之后; step3 表的长度+1。 插入算法示意举例 命题: 设有数列{4,5,8,10,21,30,43,59},长度为8,在“21”和“30”之间插入元素“25”。 算法描述: 从数列右边开始,即从第8个元素开始; 为在第5个元素“21”后插入“25”,则要把其后的3个元素右移,移动元素个数是3(8-5); for (k= L-length;k=i;k--) /* length是元素个数(8) */ L- list[k]= L- list[k-1]; /* i是插入位置(5) */ 将空出的第6个位置,存放“25”。 L-list [i-1] =x; /* 将x存放在第i-1个位置 */ 元素个数加“1” L- length++; /*

文档评论(0)

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

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

1亿VIP精品文档

相关文档