




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学而不思则惘,思而不学则殆1234567891011121314345678两个链表相交以及第一个公共节点的问题判读两个链表是否相交以及如果相交它们的第一个公共节点的问题,主要分这么几种情况:1)两个链表均不含有环2)两个链表均含有环对于一个有环一个没有,那么它们即不相交也没有公共节点首先定义节点的结构1 struct Node2 3 intvalue;4 Node*next;5 ;判断链表是否有环函数bool isRingList(Node *head)if(NULL = head)return false;Node *p1 = head, *p2 = p1->next;while(p
2、2 != NULL && p2->next!=NULL) p1 = p1->next;p2 = p2->next->next;if(p1 = p2) return true;return false;1)两个链表均不含有环1.1)判断两个链表是否相交对于不含有环的两个链表只要判断它们的tail是否相等就可以决定它们是否相交bool isCnnNonRingList(Node *h1, Node *h2) Node *p1, *p2; while(h1 != NULL) p1 = h1;h1 = h1->next; 910111213141516wh
3、ile(h2 != NULL)p2 = h2;h2 = h2->next;return (p1 = p2);1.2)找到它们的第一个公共节点对于不含有环的连个链表,只要从头开始缩短长度较长的链表的长度知道长度相等,然后 同时移动两个链表,第一个相同节点即为交点123456789101112131415161718192021222324252627Node* findFirstComNonRingList(Node *h1, Node *h2) if(!isCnnNonRingList(h1, h2) return NULL;Node *p1 = h1, *p2 = h2;intlen1
4、 = NonRingListLen(h1);intlen2 = NonRingListLen(h2);if(len1 < len2)p1 = h2;p2 = h1;len1 = len1 + len2;len2 = len1 - len2;len1 = len1 - len2;while(len1 > len2) p1 = p1->next; len1-; while(p1!=p2 && len1!=0)p1 = p1->next;p2 = p2->next;return p1;2)对于两个链表均还有环的情况这个问题比较复杂了 -,为了简单,我还是
5、先给出求它们公共节点的算法,2.1 )两个含有环的链表的公共节点主要思路是,分别求出,两个含有环链表的环的入口节点,如果他们相等则以它们的入口 节点为tail分别计算两个链表的长度,然后就和无环链表的情况一样了。1 /找到带环链表入口节点函数2 Node* findEnterRing(Node *head)3 4 判断,head是否带环也不做了 :)5 /这里面涉及到一个运算6 从开始,pl每次走一步,p2每次走两步,环的长度r,7 /第一次相遇时,p1走了 s步,p2走了 2s步,则8 /2s = s+n*r ,其中n为p2在环内循环的次数,那么,起始点到入口点距离为a,9 /入口点到第一次
6、相遇点距离为 x,则10 /a+x=s=n*r;11 /a=(n-1)*r+r-x;12 /通过这里看以看出,从起始点和相遇点,分别每次走一步,那么它们会在环的入口点相13遇14 那么,就有了如下求出环入口点的算法15 Node *p1 = head, *p2 = head;16 do17 18 p1 = p1->next;19 p2 = p2->next;20while(p1!=p2);21p2 = head;22while(p1!=p2)2324p1=p1->next;25p2=p2->next;2627returnp1;28 2930313233 Node *fi
7、ndFirstComRingList(Node *h1, Node *h2)34 35 为了简单,判断h1,h2是否有环就不做了吧:)36Node *p1 = findEnterRing(h1);37Node *p2 = findEnterRing(h2);38if(p1 != p2)39return NULL;40int len1 = 1, len2 =1;414243444546474849505152535455565758596061626364656667686970717273747576Node *11 = h1; whi1e(11!=p1) 1en1+;11= l1->n
8、ext;Node *l2 = h2;while(l2!=p2)len2+;l2 = l2->next;11 = h1;12 = h2;if(len1 < len2) l1=h2;l2=h1;len1 = len1+len2; len2 = len1-len2; len1 = len1-len2;while(len1 > len2)l1 = l1->next; len1-;while(l1!=l2 && len1!=0) l1=l1->next; l2=l2->next; len1-;return l1;2.2)两个带环链表相交的问题也分两种情况吧情况1 :这里贴不了图,可能是浏览器的问题=就用简图吧如果它们的它们的环的入口节点相同,那么可以,分别找到它们的环的入口节点判断是否相等,如果相等则相交,不相等则不想交情况2:对于相交但是如果节点不相同的情况就像这样headl:1->2->3->4->5->6->7->8->4;head2:9->8->4->5->6->7->8;具体图像自己脑补吧:),这种情况,我能想到得是,先通过上面的方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精装卧室出租合同范本
- OEM加工食品合同范例
- 公路路灯安装合同范例
- 兼职导游劳务合同范本
- 医院广告合同范本
- 合肥装潢公司合同范本
- 单位长期租车合同范本
- 单位出让房屋合同范例
- 制作安装供货合同范本
- 后增补协议合同范本
- 2025年高考作文备考训练之二元思辨作文题目解析及范文:我与“别人”
- 《中央集成式商用车电驱动桥总成技术要求及台架试验方法》
- 2024年江西应用工程职业学院单招职业技能测试题库标准卷
- 第1课 中国古代政治制度的形成与发展 课件-历史统编版(2019)选择性必修1国家制度与社会治理
- 2025年中国中煤校园招聘笔试参考题库含答案解析
- 开曼群岛公司法2024版中文译本(含2024年修订主要内容)
- 东北师大附属中学2025届高考数学四模试卷含解析
- 漏采血标本不良事件根因分析
- 安全管理工作的成果与亮点
- 粮食储备库内圆筒钢板仓及附房工程施工组织设计
- 学校科技节活动方案
评论
0/150
提交评论