线性表的链式表示和实现.ppt

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

* 单链表中查找只能从前往后,而不能从后往前查。为了查找方便,提高查找速度,可以在结点上增加一个指针域,用来存结点的直接前驱,这样的链表称为双向链表。其结点的结构为: typedef struct DuLNode{ ElemType data; //数据域 struct DuLNode *prior; //前驱指针域 struct DuLNode *next; //后继指针域 } DuLNode , *DuLinkList ; 双向链表类型的定义如下: 2.3.4 其它形式的链表 2. 双向链表 设指针p指向某一结点,则双向链表结构的对称性描述如下: – (p→prior)→next = p = (p→next)→prior,即结点*p的存 储位置既存放在其前趋结点*(p→prior)的直接后继指针域 中,也存放在它的后继结点*(p→next)的直接前趋指针域中 ai-1 ai ai+1 p * 3.双向循环链表 空表 非空表 a1 a2 … ... an head-prior=head-next=head head * 双向链表插入操作(重点): 设p已指向第 i 元素,请在第 i 元素前插入元素x ① ai-1的后继从 ai ( 指针是p)变为 x(指针是s) : s-next = p ; p-prior-next = s ; ② ai 的前驱从 ai-1 ( 指针是p-prior)变为 x ( 指针是s); s-prior = p -prior ; p-prior = s ; 注意:要修改双向指针! x s ai-1 ai p 指针域的变化: × × void dinsertbefor(DuLNode *p,ElemType x) { DuLNode *s=malloc(sizeof(DuLNode)); s—data=x; s—next=p; p—prior—next=s; s—prior=p—prior; p—prior=s; }                问:(1) (2) (3),(4)位置是否可交换? 原则是什么? 改成如下代码试试: s—prior=p—prior; s—next=p; p—prior—next=s; p—prior=s; 改成如下代码试试: s—next=p; s—prior=p—prior; p—prior=s; p—prior—next=s; * 指针域的变化: ① ai-1的后继由 ai 变为 ai+1(指针 p -next ); p -prior-next = p-next ; ② ai+1 的前驱由 ai 变为ai-1 (指针 p - prior ); p-next-prior = p -prior ; ai-1 ai+1 ai p 双向链表删除操作: 设p指向第i个元素,删除第i个元素 注意:要修改双向指针! void ddeletenode(dlistnode *p) { p–prior–next=p–next; p–next–prior=p–prior; free(p);         * 动态链表样式: 静态链表样式: 指针 数据 指针 数据 指针 数据 指示 数据 指示 数据 指示 数据 指示 数据 指示 数据 数组中每个元素都至少有两个分量,属于结构型数组。 常用于无指针类型的高级语言中。 用一片连续空间(一维数组)实现链式存储,这种方式称为静态链表。 具体实现方法:定义一个结构型数组(每个元素都含有数据域和指示域),就可以完全描述链表,指示域就相当于动态链表中的指针,指示结点在数组中的相对位置。 4.静态链表(自学) * 静态单链表的类型定义如下: #define MAXSIZE 1000 //预分配链表的最大长度 typedef struct { ElemType data ; //数据域 int cur ; //指示域 }component ,SLinkList[MAXSIZE]; //这是一维结构型数组 前例1:一线性表 S = ( ZHAO, QIAN, SUN, LI, ZHOU, WU ),用静态链表如何表示? 说明1:假设S为SLinkLi

文档评论(0)

宝贝计划 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档