- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7作用于单链表的算法 上次课,我们介绍了单链表的原理及实现方法,还构造了一个单链表。本次课,我们将在上次课的基础上,来讨论基于单链表的一些算法。在应用中来加深对单链表的理解。 1、单链表的合并 void MergeList_L(LinkList LA,LinkList LB,LinkList LC) {//链表的合并。原来有序,合并后依然有序。 LinkList pa,pb,pc; LC=pc=new LNode; pc-next=0; pa=LA-next; pb=LB-next; delete LA; delete LB; while(pa!=0 pb!=0) { if(pa-data=pb-data) { LA=pa-next; pc-next=pa; pa=LA; pc=pc-next; } else { LB=pb-next; pc-next=pb; pb=LB; pc=pc-next; } } if(pa!=0) pc-next=pa; if(pb!=0) pc-next=pb; } int main(int argc, char* argv[]) { LinkList L1,L2,L3; InitList_L(L1); InitList_L(L2); ListInsert_L(L1,1,1); ListInsert_L(L1,2,3); ListInsert_L(L1,3,5); ListInsert_L(L1,4,7); ListInsert_L(L2,1,2); ListInsert_L(L2,2,4); ListInsert_L(L2,3,6); ListInsert_L(L2,4,8); print(L1); print(L2); MergeList_L(L1,L2,L3); print(L3); return 0; } 思考题: 一、判断题 单链表从任何一个结点出发,都能访问到所有结点........( ) 二、程序设计题 1、从屏幕上输入若干个整数,以9999结尾,9999不包括在内。按照输入顺序正向建立单链表。 解法如下:把输入数据每次都插入到链表的尾部。 #includeiostream using namespace std; struct node { int data; node *next; }; /// void print(node *head) { node *p=head-next; while(p) { coutp-data ; p=p-next; } coutendl; } int main(int argc, char* argv[]) { node *head=new node;//头结点 head-next=0; node *tail=head;//tail永远指向最有一个结点 while(1) { int temp; cintemp;//输入数据 if(temp==9999)break; node *p=new node;//生成结点 p-data=temp; p-next=0; tail-next=p;//插入链表尾部 tail=p;//tail后移 } print(head); return 0; } 2、从屏幕上输入若干个整数,以9999结尾,9999不包括在内。按照输入顺序的逆序建立单链表。 解法如下:每次把输入的数据插入到链表的头部。 #includeiostream using namespace std; struct node { int data; node *next; }; int main(int argc, char* argv[]) { node *head=new node;//头结点 head-next=0; while(1) { int temp; cintemp;//输入数据 if(temp==9999)break; node *p=new node;//生成结点 p-data=temp; p-next=head-next;//插入链表头部 head-next=p; } return 0; } 3、已知非空线性链表第一个结点由list指出,请写一算法,交换p所指的节点与其下一个节点在链表中的位置(设p指向的不是链表最后那个节点)。 解法如下: //首先遍历list,找到p的前驱pre pre=list; while(pre-next!=p) { pre=pre-ne
您可能关注的文档
- 计算机应用基础3-67.ppt
- 交通处罚单管理系统(C语言课程设计).doc
- 交通处罚单管理系统_C语言实习报告2.doc
- 经典的PID算法.doc
- 经典的SQL语句大全.doc
- 经典的个人简模板.doc
- 经典的日语学习方法.doc
- 经典简历精选.doc
- 经典面试.net题.doc
- 经典全面的Excel使用方法.doc
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)