6、线性表.pptVIP

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6、线性表

线性表的逻辑结构 线性表(Linear List)的逻辑定义 线性表的逻辑结构特征 常见的线性表的基本运算 线性表(Linear List)的逻辑定义 线性表是由n(n≥0)个数据元素a1,a2,…,an组成的有限序列。 n定义为表的长度(n=0时称为空表)。 将非空的线性表(n>0)记作: (a1,a2,…,an) 数据元素ai(1≤i≤n)只是个抽象符号,其具体含义在不同情况下可以不同。 举例 【例1】英文字母表(A,B,…,Z)是线性表,表中每个字母是一个数据元素 【例2】一副扑克牌的点数(2,3,…,10,J,Q,K,A)也是一个线性表,其中数据元素是每张牌的点数 【例3】学生成绩表,每个学生及其成绩是一个数据元素,其中数据元素由学号、姓名、各科成绩及平均成绩等数据项组成 线性表的逻辑结构特征 有且仅有一个开始结点a1,a1没有直接前趋, a1有且仅有一个直接后继a2; 有且仅有一个终结结点an,an没有直接后继,有且仅有一个直接前趋an-1; 其余的内部结点ai(2≤i≤n-1)都有且仅有一个直接前趋ai-1和一个ai+1。 常见的线性表的基本运算 InitList(L):构造一个空的线性表L ListLength(L):求线性表L中的结点个数 GetNode(L,i):取线性表L中的第i个结点 LocateNode(L,x):在L中查找值为x 的结点,并返回该结点在L中的位置 InsertList(L,x,i):在线性表L的第i个位置上插入一个值为x 的新结点,插入后,表L的长度加1 DeleteList(L,i):删除线性表L的第i个结点,删除后表L的长度减1 顺序存储结构 顺序表 顺序表上的基本运算 顺序表的定义 (1) 顺序存储方法 把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法。 (2) 顺序表(Sequential List)  ???用顺序存储方法存储的线性表简称为顺序表(Sequential List)。 结点ai 的存储地址 假设表中每个结点占用c个存储单元,其中开始结点a1的存储地址(简称为基地址)是LOC(a1),那么结点ai的存储地址 LOC(ai)为:???????? 线性表的基本运算 InsertList(L,x,i) DeleteList(L,i) 链式存储结构 指针变量及其使用 单链表 单链表的运算 循环链表 双链表 顺序表和链表的比较 指针变量定义 (1)type 指针类型标识符=^基类型标识符; var 指针变量名:指针类型标识符; eg: type point=^integer; var p,p1,p2:point; (2)var 指针变量名:^基类型标识符; eg: var p,p1,p2:^integer; 指针变量的基本使用方法 申请存储单元:new(p); { p^:=……;} 释放存储单元: dispose(p); 指针变量的赋值和操作: p1:=p2; p1^:=p2; p:=nil; 链接存储方法 1.链接方式存储的线性表简称为链表 链表的具体存储表示为:   ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)   ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址信息(称为指针或链) 2.链表的结点结构 链接存储方法(2) 3.头指针head和终端结点指针域的表示 ?单链表中每个结点的存储地址是存放在其前趋结点next域中,而开始结点无前趋,故应设头指针head指向开始结点。终端结点无后继,故终端结点的指针域为空,即nil/^。 注意:链表由头指针唯一确定,单链表可以用头指针的名字来命名。 例(bat,cat,eat,fat,hat,jat,lat,mat) 4、单链表的一般图示法 ?链接存储方法(3) ?5、单链表类型描述 type link=^node; node=record data:integer; next:link; end; ? var head:link; 1、建立单链表 (1) 头插法建表 ① 算法思路 ???  从一个空表开始,重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志为止。 ② 具体算法实现 建立单链表 (2) 尾插法建表 ① 算法

文档评论(0)

sd44055 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档