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

《2.2_链式存储的线性表OK》.pdf

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

2.2.1 线性表的逻辑结构线性表的逻辑结构 22.22.22 顺序存储线性表顺序存储线性表 2.2.3 链式存储线性表(线性链表) 2.2.4 线性表的应用 ——一元多项式的相加 2222..2222..3333 链式存储线性表链式存储线性表链式存储线性表链式存储线性表 11. 线性表的链式存储线性表的链式存储 ——用用一组任意的存储单元任意的存储单元 (连续的或连续的或不连续的连续的) 来依次存放线性表的数据元素。 元素间的逻辑关系需要依靠“指针”指明,即 通过每个节点的指针域将线性表的n个结点按逻辑次 序链在一起。 序链在 起。 每个结点由两个域组成每个结点由两个域组成::数据域和指针域数据域和指针域。 设指针设指针p指向某指向某一结点结点,有有 pp datadata nextnext 其中其中 data(p)(p)——pp所指向结点的数据域内容所指向结点的数据域内容 (即存放该结点本身的数据) next(p) p所指向结点的指针域内容 next(p)——p所指向结点的指针域内容 (即存放该结点的下一结点地址) 结点定义(C语言描述) typedef struct node { chhar ddatta; structstruct nodenode *next;next; }LISTNODE 结点的动态生成GETNODE(P) (C语言实现) int GETNODE(LISTNODE *P) { P = (LISTNODE *)malloc (sizeof(LISTNODE)); if(!P)if(!P) retturn(0)(0); elseelse return(1);return(1); } 回收结点RET(P) C语言中实现:free(P); 单链表单链表 单循环链表单循环链表 双向链表 双向循环链表 单链表单链表——结点包含一个指针结点包含一个指针,指明直接后继元素指明直接后继元素 head (头指针,存放链表的第一个结点的地址) a1 a2 … an Λ p ((表中最后表中最后一个结点指针为个结点指针为 空,表示链表到此结束) head Λ (空表) 特点:只能在一个方向上查找其后的元素。 例:在上图的单链表中,指针p指向值为a 的结点。2 data(head)=data(head)= ;; next(head)=next(head)= ;; data(next(head))=data(next(head))= 。 例例::在非空链表中查找元素在非空链表中查找元素aa之前的结点之前的结点qq ((按值查找按值查找)) LOOKFOR (head, a, q) //寻找元素a之前的结点指针q 1 q← head; 22 while((next(q)!while((next(q)!=nil)nil) andand (data(next(q))!(data(next(q))!=a)a) dodo 3 q←next (q); //如果表中无a结点,则q指向链表最后一个结点 44 retturn 单链表的插入单链表的插入 例例::在链表中值为在链表中值为a的结点前插入值为的结点前插入值为b的结点的结点. b p ②②

文档评论(0)

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

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

1亿VIP精品文档

相关文档