数据结构(c 描述).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3. 单链表上的查找运算 (1) 按值查找Locate(head,x) 在单链表head中,查找值为x的结点,若找到,返回它的地址,否则返回NULL。 (2) 按序号查找get(head,i) 在单链表head中查找第i个位置上的元素,若找到,则返回它的地址,否则返回NULL。 Link *Locate(link *head,elemtype x) { link *p; p=head-next; while((p!=NULL)(p-data!=x)) p=p-next; return p; } 算法的时间复杂度都为O(n)。 Link *get(link *head,int i) { int j; link *p; j=1; p=head-next; while((ji)(p!=NULL) { j++; p=p-next; } return p; } 算法的时间复杂度都为O(n)。 4. 单链表上的插入运算 若将x插入a和b 之间,插入结点的指针变化如图2-8所示。 * 第2章 线性表 数据结构(C++描述) 目录 2.1 线性表的定义及其运算 2.2线性表的顺序存储结构 2.3 线性表的链式存贮结构 结束放演 2.1 线性表的定义及其运算 2.1.1线性表的定义 1. 线性表的定义 线性表(linear list)是n(n≥0)个数据元素a1,a2,…an组成的有限序列。其中n 称为数据元素的个数或线性表的长度,当n=0时称为空表,n0时称为非空表。通常将非空的线性表记为(a1,a2,…,an),其中的数据元素ai(1≤i≤n)是一个抽象的符号,其具体含义在不同情况下是不同的,即它的数据类型可以根据具体情况而定,本书中,我们将它的类型设定为elemtype,表示某一种具体的已知数据类型。 2. 线性表的特征 从线性表的定义可以看出线性表的特征: (1 )??? 有且仅有一个开始结点(表头结点)a1,它没有直接前驱,只有一个直接后继; (2)? 有且仅有一个终端结点(表尾结点)an,它没有直接后继,只有一个直接前驱; (3)???? 其它结点都有一个直接前驱和直接后继; ( 4)元素之间为一对一的线性关系。 线性表是一种典型的线性结构,用二元组表示为: linear_list=(A,R) 其中 A={ai ∣1≤i≤n,n≥0,ai∈elemtype} R={r} r={ai,ai+1 ∣1≤i≤n-1} 对应的逻辑结构图如图2-1所示。 2.1.2 线性表的运算 常见线性表的运算有: 1.置空表 SETNULL(L)将线性表L置成空表 2. 求长度 LENGTH(L) 求给定线性表L的长度 3. 取元素 GET(L,i) 若1≤i≤length(L),则取第i个位置上的元素,否则取得的元素为NULL。 4.求直接前趋 PRI0R(L,X)求线性表L中元素值为X的直接前趋,若X为第一个元素,前驱为NULL。 5.求直接后继 NEXT(L,X)求线性表L中元素值为X直接后继,若X为最后一个元素,后继为NULL。 6.定位函数 LOCATE(L,X) 在线性表L中查找值为X的元素位置,若有多个值为X,则以第一个为准,若没有,位置为0。 7.插入 INSERT(L,X,i)在线性表L中第i个位置上插入值为X的元素。 8.删除 DELETE(L,i) 删除线性表L中第i个位置上的元素。 ? 2.1.3线性表的抽象数据类型描述 上述这些操作可用抽象数据类型描述为: ADT Linearlist is Data: 一个线性表L定义为L=(a1,a2,…,an),当L=( )时定义为一个空表 operation: void setnull(L) //将线性表L置成空表 int Length(L) //求给定线性表L的长度 elemtype Get(L,i) //取线性表L第i个位置上的元素 elemtype Prior(L,x) //求线性表L中元素值为X的直接前趋 elemtype Next(L,x) //求线性表L中元素值为X的直接后继 int Locate(L,x) //在线性表L中查找值为X的元素位置 void Insert(L,x,i) //在线性表L中第i个位置上插入值为X的元素 void Delete(L,i) //删除线性表L中第i个位置上的元素 END Linea

文档评论(0)

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

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

1亿VIP精品文档

相关文档