第3章-线性表1-顺序表示.ppt

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

第2章线性表第二讲2011年8月26日内容提要:理解线性表的逻辑结构及定义掌握线性表的顺序存储及操作实现掌握线性表的链式存储及操作实现线性表结构的应用举例二、线性表的存储顺序存储:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。设首元素a1的存放地址为ADR(a1)(称为首地址),设每个元素占用存储空间(地址长度)为K字节,则表中任一数据元素的存放地址为:ADR(an)=ADR(a1)+K*(n-1)ADR(an+1)=ADR(an)+K线性表的顺序存储结构示意图[例1]一维数组M,下标的范围是0到9,每个数组元素用相邻的5个字节存储。设存储数组元素M[0]的第一个字节的地址是98,则M[3]的第一个字节的地址是()线性表类的定义例3-1iostream.h输入输出流头文件stdlib.h标准库头文件PrivatePublic5、顺序表的插入6、顺序表的删除假定在表中任意位置插入、删除元素都是等概率的,删除概率q(i)=1/n,则:例3-3Voidmain(){Seqlists;Inti,pos;Intdata[6]={75,61,25,83,66,24};For(i=0,i6;i++);s.Insert(data[i],i);PrintList(s);s.Delete(4);PrintList(s);If((pos=s.Find(25))!=-1);Cout“have25inlist.Positionis“pos”.”endl;}本节小结**(a1,a2,…ai-1,ai,ai+1,…,an)一、线性表的定义:是n个数据元素的有限序列n=0时称为数据元素根结点ai的前件ai的后件下标,是元素的序号,表示元素在表中的位置n为元素总个数,即表长空表终结点ADR(a1)ADR(a1)+(i-1)KADR(a1)+KADR(a1)+(n-1)Kan…ai…a2a1地址内容元素在表中的位序1i2n空闲区K因此:ADR(M[3])=98+5×(3-0)=113解:地址计算通式为:ADR(an)=ADR(a1)+(n-1)K三、运算1、求表长:ListSize()2、判表空:空为真1;非空假03、查找:Find(intitem)4、取元素:GetData(intpos)5、插入6、删除7、置表空:ClearList()实现步骤:找到需要插入的位置i,将第n至第i位的元素向后移动一个位置;将要插入的元素写到第i个位置;表长加1。注意:事先应判断:插入位置i是否合法?表是否已满?{For(intj=size-1;j=pos;j--)List[j+1]=List[j];List[pos]=item;Size++;Return1;}核心代码:实现步骤:将第i+1至第n位的元素向前移动一个位置;表长减1。注意:事先需要判断,删除位置i是否合法?下表是否在定义范围内。Inttemp=List[pos];For(intj=pos;jsize;j--)List[j]=List[j+1];Size--;Returntemp;核心代码:四、时间效率分析:插入长度为n的顺序表任意i(1≤i≤n)一个元素概率pi=?1/(n+1)所移动的元素的次数?n-i+1移动元素次数的平均值?删除操作时间效率(平均移动次数)结论,插入、删除时间复杂度T(n)=O(n)顺序表的空间复杂度S(n)=O(1)(没有占用辅助空间)线性表顺序存储结构特点:逻辑关系上相邻的两个元素在物理存储位置上也相邻;优点:简单;存储空间使用紧凑;缺点:在插入,删除某一元素时,需要移动大量元素O(n);预先分配空间需按最大空间分配,利用不充分;表容量难以扩充为克服这一缺点,我们引入另一种存储形式:

文档评论(0)

优美的文学 + 关注
实名认证
内容提供者

优美的文学优美的文学优美的文学优美的文学优美的文学

1亿VIP精品文档

相关文档