单链表相交
来源:互联网 发布:交易训练软件 编辑:程序博客网 时间:2024/05/23 00:21
给定两个单链表的头节点head1和head2,如何判断两个链表是否相交?相交的话返回true,不想交的话返回false。
给定两个链表的头结点head1和head2(注意,另外两个参数adjust0和adjust1用于调整数据,与本题求解无关)。请返回一个bool值代表它们是否相交。
思路:找到两个链表进入环的第一个节点:1、都为空,两个都无环
2、一个为空无环,另一个不为空有环,必然不相交
3、都不为空,两个都有环,判断是否相交
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class ChkIntersection {public: bool chkInter(ListNode* head1, ListNode* head2, int adjust0, int adjust1) { ListNode *pos1=head1,*pos2=head2; pos1=chkLoop(head1); pos2=chkLoop(head2); if(pos1==NULL&&pos2==NULL) {//都为空,两个都无环 return chkIntersect(head1,head2);//看无环单链表是否相交 } //一个为空无环,另一个不为空有环,必然不相交 else if((pos1==NULL&&pos2!=NULL)||(pos1!=NULL&&pos2==NULL)){ return false; }else{ //都不为空,两个都有环,判断是否相交 if(pos1==pos2) return true; ListNode *p=pos1->next; while(p!=pos1){ if(p==pos2) return true; p=p->next; } return false; } } //找到进入环的第一个节点 ListNode* chkLoop(ListNode* head) { //快慢指针第一次相遇时,把快指针重新指回头结点后以1的速度再次遍历必然在环内初始节点与慢指针相遇 ListNode *slow=head; ListNode *fast=head; while(fast!=NULL&&fast->next!=NULL){ slow=slow->next; fast=fast->next->next; if(slow==fast){ fast=head; while(fast!=slow){ slow=slow->next; fast=fast->next; } return fast; } } return NULL;//跳出循环说明没有环 } //判断两个无环单链表的最后一个节点是否相同来判断两个链表是否相交 bool chkIntersect(ListNode* headA, ListNode* headB) { ListNode *p1=headA,*p2=headB; while(p1->next){//链表1从头节点开始,走到最后一个节点 p1=p1->next; } while(p2->next){//链表2从头节点开始,走到最后一个节点 p2=p2->next; } if(p1==p2) return true; else return false;//遍历到最后,如果curA!=curB,说明两个链表不相交 }};
阅读全文
0 0
- 单链表相交
- 10.两个单链表相交,计算相交点
- 有环单链表相交判断、单链表相交判断
- 单链表相交和环
- 两个单链表是否相交
- coding - 单链表相交问题
- 单链表是否相交
- 单链表是否相交
- 两个单链表相交问题
- 单链表相交判断练习
- 单链表的相交问题
- 单链表的相交
- 单链表判断是否相交
- 两个单链表相交,求开始相交的点
- 判断两个单链表是否相交
- 判断两个单链表是否相交
- 判断两个单链表是否相交
- 判断两个单链表是否相交
- mybatis,初级入门
- Q*Layout
- JZOJ2017.07.15B组(待续)
- 第2篇 在Ubuntu14.04上创建Qt 5.4.0开发环境
- HTML5 canvas宇宙太空黑洞效应动画
- 单链表相交
- 数组
- redis.conf配置
- Codeforces 827 D 最小生成树+倍增 解题报告
- 闭包的两大基础
- Centos sshfs的安装和使用--将远程sftp目录映射到本地目录
- composer安装laravel框架
- Android 事件知识相关图谱
- IAR问题总结(持续更新)