大学数据结构课件CH高级链表.ppt

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

循环链表 (Circular List) 循环链表是单链表的变形。 循环链表最后一个结点的 link 指针不 为NULL,而是指向了表的前端。 为简化操作,在循环链表中往往加入表头结点。 循环链表的特点是:只要知道表中某一结点的地址,就可搜寻到所有其他结点的地址。 循环链表的示例 带表头结点的循环链表 循环链表的定义 typedef char ListData; typedef struct cnode //链表结点 { ListData data; //结点数据域 struct cnode * link; //结点链域 } CircListNode; typedef CircListNode * CircLinkList; //循环链表头指针 CircLinkList first; //循环链表头指针 循环链表的查找算法 带尾指针的循环链表 将循环链表链入单链表链头 双向链表 (Doubly Linked List) 双向链表是指在前驱和后继方向都能游历(遍历)的线性链表。 双向链表每个结点结构: 双向链表通常采用带表头结点的循环链表形式。 结点指向 p == p-prior-next == p-next-prior 双向循环链表的定义 typedef int ListData; typedef struct dnode { ListNode data; //数据 struct dnode * prior, * next; //指针 } DblNode; typedef DblNode * DblList; //双向链表 建立空的双向循环链表 void CreateDblList ( DblList first ) { first = ( DblNode * ) malloc ( sizeof ( DblNode ) ); if ( first == NULL ) { print ( “存储分配错!\n” ); exit (1); } first-prior = first-next = first; //表头结点的链指针指向自己 } 计算双向循环链表的长度 int Length ( DblList first ) { //计算带表头结点的双向循环链表的长度 DblNode * p = first-next; int count = 0; while ( p != first ) { p = p-next; count++; } return count; } 定位:查找第 i 个结点在链中的位置 作业: 1.非空的循环单链表head?的尾结点(由p所指向)满足___ A、 p - next = NULL   B、 p = NULL   C、 p - next = head   D、 p = head 2.在双向链表存储结构中,删除p所指结点时须修改指针_______. A、 p----next-----prior=p---prior;p—prior—next=p—next; B、 p----next=p---next---next;p---next---prior=p; C、 p--prior---next=p;p---prior=p---prior---prior; D、 p--prior=p--next--next;p--next=p--prior--prior; 3. 在双向循环链表中,在p指针所指的结点后插入一个指针所指向的新结点,其修改指针的操作是_____ A、 p--next=q;q--prior=p;p--next--prior=q;q--next=q; B、 p--next=q;p--next--prior=q;q--prior=p;q--next=p--next; C、 q--prior=p;q--next=p--next;p--next--prior=q;p--next=q; D、 q--next=p--next;q--prior=p;p--next=q;p--next=q; a0 a1 a2 an-1 first an-1 first a1 a0 first (空表) (非空表) 查找成功 查找不成功 循环链表的查找 first first 3

文档评论(0)

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

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

1亿VIP精品文档

相关文档