高中信息学奥赛CSP-JS+NOIP—入门组C++知识点讲解)第14讲链表.pptx

高中信息学奥赛CSP-JS+NOIP—入门组C++知识点讲解)第14讲链表.pptx

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

学科竞赛编程教研研究院C++NOIPNOIIOI

1PARTONE例:跳马。依下图将每一步跳马之后的位置(x,y)放到一个“结点”里,再用“链子穿起来”,形成一条链,相邻两结点间用一个指针将两者连到一起。结构的概念与应用

1PARTONE依上图有7个结点(x1,y1(x2,y2)(x6,y6)(x7,y7)为了表示这种既有数据又有指针的情况,引入结构这种数据类型。

1PARTONE1、链表中的元素称为“结点”,每个结点包括两个域:数据域和指针域;2、单向链表通常由一个头指针(head),用于指向链表头;3、单向链表有一个尾结点,该结点的指针部分指向一个空结点(NULL)。元素地址数据域指针域结点元素地址元素地址元素pp-nextp-next-next......头指针NULL

1PARTONE链表的创建(链表的结构)//类型和变量的说明 structNode//结构体类型 { intdata;//数据域 Node*next;//指针域 }; Node*head,*p,*r;//头指针,结点,尾指针 intx;//元素

1PARTONEintmian(){cinx;//输入数据 head=newNode;//申请头结点 r=head;//一开始就这个一个结点,头和尾都是它 //开始根据读取的数据进行尾插结点 while(x!=-1) { p=newNode;//申请一个新结点 p-data=x;//数据域元素是x p-next=NULL;//当前p结点作为尾结点 r-next=p;//让r成为p的直接前趋 r=p;//尾指针后移一位 cinx; } p=head-next;//头指针没有数据,只要从第一个结点开始就行了 while(p-next!=NULL) { coutp-data; p=p-next; } coutp-dataendl;//最后一个结点的数据单独输出 return0;}链表的建立和输出

链表的增删改查链表的查找//查找数据域满足一定条件的结点voidzhao(){ p=head-next; while(p-data!=x)(p-next!=NULL) { p=p-next;//找不到就继续下一个 } if(p-data==x) { cout找到了; } else { cout不存在;}

1PARTONE取出单链表的第i个结点的数据域链表的读取voidget(Node*head,inti){ Node*p;//结点 intj;//记录 p=head-next;//从头开始 j=1;//从第一个开始 while((p!=NULL)(ji)) { p=p-next; j+=1; } if((p!=NULL)(j==i)) {coutp-data; } else {couti不存在; } }

1PARTONE链表的插入在链表中插入一个结点voidinsert(Node*head,inti,intx)//插入x到第i个元素之前 { Node*p,*s; intj; j=0; //寻找i-1个结点,插在它的后面,相当于插在了第i个的前面 while((p!=NULL)(ji-1)){ p=p-next; j+=1; } if(p==NULL) coutnothisposition; else { s=newNode; s-data=x; s-next=p-next; p-next=s; } }

1PARTONEvoiddelete(Node*head,inti) { Node*p,*s; intj; p=head; j=0; while((p-next!=NULL)(ji-1)) { p=p-next; j+=1; }//p指向第i-1个结点 if(p-next=NULL) cout无法删除; else { s=p-next; p-next=p-next-next; free(s); } ]链表的删除删除单链表中的第i个结点

1PA

文档评论(0)

中小学PPT课件 + 关注
实名认证
内容提供者

中小学PPT课件

1亿VIP精品文档

相关文档