网站大量收购独家精品文档,联系QQ:2885784924

数据结构第二篇(线性表).ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
typedef struct DulNode { ElemType data; struct DulNode *prior,*next;} DulNode, *DuLinkList; prior data next L 空双向循环链表: 非空双向循环链表: L A B b c a p p-prior-next= p= p-next-proir; 双向链表(double linked list)结点定义 双链表一般也是由头指针唯一确定的,增加头指针也能使双链表上的某些运算变得方便,将头结点和尾结点链接起来也能构成循环链表,并称之为双向链表。 双链表操作 (p—prior)—next=p=(p—next)—prior 即结点*p的存储位置既存放在其前驱结点*(p—prior)的直接后继指针域中,也存放在它的后继结点*(p—next)的直接前驱指针域中。 设指针p指向某一结点,则双向链表结构的对称性可用下式描述: 在双链表中,有些操作如:ListLength、GetElem和LocateElem等仅需要涉及一个方向的指针,则它们的算法描述和线性链表的操作相同,但在插入和删除操作时有很大的不同,在双链表中插入和删除必须同时修改两个方向上的指针。上述两个算法的时间复杂度均为O(n)。 双链表操作 * * 青岛理工大学 通信与电子工程学院 1、线性表 线性表(Linear List) :是n个数据元素的有限序列。 线性结构的特点:在数据元素中的非空有限集中 (1)存在唯一的一个被称作“第一”的数据元素; (2)存在唯一的一个被称作“最后一个”的数据元素; (3)除第一个外,集合中的每个数据元素均只有一个前驱; (4)除最后一个外,集合中的每个数据元素均只有一个后继。 第二章 线性表 2.1 线性表的类型定义 例1、26个英文字母组成的字母表 (A,B,C、…、Z) 例2、某校从2010年到2015年各种型号的计算机拥有量的变化情况。 (1160,3197,7286,12501,21922,31887) 2.1 线性表的类型定义 在稍复杂的线性表中,一个数据元素可以由若干个数据项组成。在这种情况下,常把数据元素称为记录,含有大量记录的线性表又称为文件。 例3、学生健康情况登记表如下: 姓 名 学 号 性 别 年龄 健康情况 王小林 790631 男 18 健康 陈 红 790632 女 20 一般 刘建平 790633 男 21 健康 张立立 790634 男 17 神经衰弱 …….. …….. ……. ……. ……. 1、线性表 线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同特征,即属同一数据对象,相邻数据元素之间存在着序偶关系。 若将线性表记为: (a1,…,a i-1,ai,a i+1…,an) 则表中ai-1领先于ai,ai领先于a i+1 ,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。 当i=1,2,…,n-1时,ai有且仅有一个直接后继,当i=2,3,…,n时, ai有且仅有一个直接前驱。 线性表中的元素的个数n(n ? 0)定义为线性表的长度,n=0时称为空表。 1、线性表 ADT List{ 数据对象:D={ai|ai?ElemSet,i=1,2,…,n,n?0} 数据关系:R1={ai-1,ai| ai-1,ai, ? D,i=2,…,n} 基本操作:InitList(L) // 构造一个空的线性表L DestroyList(L) //初始条件:线性表L已经存在 //操作结果:销毁线性表L。 2、抽象数据类型线性表 . . . } 例2-1 利用两个线性表LA和LB分别表示两个集合A和B,现要求一个新的集合A=A∪B。只要从线性表LB中依次取得每个数据元素,并依值在线性表LA中进行查访,若不存在,则插入。 void union(List La,List Lb) { La-len=Listlength(La); Lb-len=Listlength(Lb);//线性表长 for (i=1; i=Lb-len; i++) { GetElem(Lb,i,e);//取Lb 中的第个i元素赋给e if(!LocateElem(La, e, equal() ) ListInsert(La, ++La-len, e); //La中不存在和e相同的数据元素,则插入

文档评论(0)

189****6140 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档