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

4.3 线性链表数据结构与算法.pdf

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计与问题求解 ——线性链表 线性链表  线性链表  采用链式存储的线性表  存储特点:每个结点都分两部分  数据域 :存储元素的值  指针域 :存放直接前趋或直接后继元素的地址信息 链表的存储结构 存储地址 数据域 指针域 20H a2 80H head … … 40H 40H 90H … … 80H a3 NULL 90H a1 20H 链表的定义和初始化 struct LNode { ElemType data; // 数据域,ElemType代表某种数据类型 struct LNode *next; // 指针域 } ; LNode* head; // 定义头指针 head = new LNode; // 定义头结点 head-next = NULL; // 头结点指针域为空 求单链表的长度 int Length( ) { LNode *p=head-next; //p指向第一个元素所在结点 int len=0; while( p!=NULL ) { //逐个检测p结点存在与否 len++; p=p-next; //指针后移 } return len; } 链表的运算  老师领着的小朋友的队伍中,如果 有一个同学要加入到队伍中(插入新结点),该如何操作? 如果队伍中有一个同学要离开(删除结点),又该如何操作? 在链表的第i个位置插入新的结点 ① 找到第i-1个结点的指针p。 ② 建立新结点s ,将新结点的指针域保存第i个结点的地址。 ③ 第i-1个结点的指针域保存新结点的地址 在链表的第i个位置插入新的结点 void Insert(LNode *head, int i, ElemType x) { if(i1) { cout不存在第i个位置; } else { LNode *p=head; // p最终将指向第i-1个结点 int k=0; //p 目前指向第0个结点(头结点) while( p!=NULLki-1 ) { p=p-next; k++; } if(p==NULL) cout i超出链表最大可插入位置; else {

文档评论(0)

恬淡虚无 + 关注
实名认证
内容提供者

学高为师,身正为范.师者,传道授业解惑也。做一个有理想,有道德,有思想,有文化,有信念的人。 学无止境:活到老,学到老!有缘学习更多关注桃报:奉献教育,点店铺。

1亿VIP精品文档

相关文档