数据第二章.ppt

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

在静态链表尾追加新结点 int Append ( SLinkList SL, ListData x ) { if ( SL.newptr == -1 ) return 0; //追加失败 int q = SL.newptr; //分配结点 SL.newptr = SL.Nodes[SL.newptr].link; SL.Nodes[q].data = x; SL.Nodes[q].link = NULL; int p = 0; //查找表尾 while ( SL.Nodes[p].link != -1 ) p = SL.Nodes[p].link; SL.Nodes[p].link = q; //追加 return 1; } 在静态链表中查找第i个元素 int Locate ( SLinkList SL, int i ) { if ( i 0 ) return -1; //参数不合理 int j = 0, p = SL.Nodes[0].link; while ( p != -1 j i ) { //循链查找第 i 号结点 p = SL.Nodes[p].link; j++; } if ( i == 0 ) return 0; return p; } 释放第i个结点 int Remove ( SLinkList SL, int i ) { int p = Locate ( SL, i-1 ); if ( p == -1 ) return 0; //找不到结点 int q = SL.Nodes[p].link; //第 i 号结点 SL.Nodes[p].link = SL.Nodes[q].link; SL.Nodes[q].link = SL.newptr; //释放 SL.newptr = q; return 1; } 2.3.2循环链表 循环链表是单链表的变形。 循环链表最后一个结点的 link 指针不为NULL,而是指向了表的前端。 为简化操作,在循环链表中往往加入头结点。 循环链表的特点是:只要知道表中某一结点的地址,就可搜寻到所有其他结点的地址。 循环链表示例 带头结点的循环链表 a1 a2 a3 an H an H a2 a1 H (空表) (非空表) 循环链表的搜索算法 first 31 48 15 57 搜索15 ? ? ? current current current first 31 48 15 57 搜索25 ? ? ? current current current current ? current 思考整个搜索算法的条件是? 循环链表中尾指针的应用 考虑如何实现将带有尾指针的两个循环论链表合并为一个? an A a2 a1 an a2 a1 B 带尾指针的循环链表 rear 31 48 15 57 22 如果插入与删除仅在链表的两端发生,可采用带表尾指针的循环链表结构。 在表尾插入,时间复杂性 O(1) 在表尾删除,时间复杂性 O(n) 在表头插入,相当于在表尾插入 在表头删除,时间复杂性 O(1) 2.3.3双向链表 双向链表是指在前驱和后继方向都能游历(遍历)的线性链表。 双向链表每个结点有两个指针域, 结构如下: 双向链表通常采用带头结点的循环链表形式。 前驱方向 ? ? 后继方向 prior data next 双向链表的C语言定义 typedef struct DuLNode { ElemType data; struct DuLNode *prior,*next; } DuLNode ,*DuLinkList; prior data next 空双向循环链表: 非空双向循环链表: L L A B 结点指向 p-prior-next == p == p-next-prior p-prior p-next p prior next 双向链表中插入操作 s=(DuLNode *)malloc(sizeo

文档评论(0)

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

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

1亿VIP精品文档

相关文档