判断两链表相交的问题(分有环和无环,以及求第一个相交结点)
来源:互联网 发布:阿里云打印域名证书 编辑:程序博客网 时间:2024/06/07 19:17
首先用一个函数判断两个链表是否有环
1.如果两个链表都没有环,则判断最后一个结点是否相等,如果相等,则相交,如果不等,则不想交
2.如果只有一个有环,则不相交
3.如果两个都有环,则看其中一个环里的点在另一个环里是否出现,如果出现则相交,否则不相交
//求链表相交的第一个结点思路:求出两量表长度之差,让长链表遍历插值个结点,然后再同步遍历两个链表,直到有相同结点
1.如果两个链表都没有环,则判断最后一个结点是否相等,如果相等,则相交,如果不等,则不想交
2.如果只有一个有环,则不相交
3.如果两个都有环,则看其中一个环里的点在另一个环里是否出现,如果出现则相交,否则不相交
//判断是否有环,如果有返回true和环中结点,无返回false和最后一个结点
typedef ElemType int;typedef struct Node{ElemType data;struct Node *next;}Node,*pNode;bool isCircled(pNode head,pNode &circleNode,pNode &lastNode){pNode first=head;pNode second=head->next;while(!first&&!second&&first!=second){if(second->next!=NULL)second=second->next;if(first->next==NULL)lastNode=first;if(second->next!=NULL)lastNode=second;first=first->next;second=second->next;}if(!first&&!second&&first==second){circleNode=first;return true;}return false;}//判断是否相交bool isCrossed(pNode head1,pNode head2){pNode circleNode1,circleNode2;pNode lastNode1,lastNode2;bool state1=isCircled(head1,circleNode1,lastNode1);bool state2=isCircled(head2,circleNode2,lastNode2);//1.如果两链表都无环,则判断最后一个结点是否相等,如果相等,则相交if(state1||state2){if(lastNode1==lastNode2)return true;else return false;}//2.只有一个有环,则不相交else if(!(state1&&state2)){return false;}//3.都有环,则判断第一个环内的点是否在第二个环内出现,如果出现则相交,否则不相交else{pNode tmp=circleNode1->next;while(tmp!=circleNode1){if(tmp==circleNode1)return true;tmp=tmp->next;}return false;}return false;}
//求链表相交的第一个结点思路:求出两量表长度之差,让长链表遍历插值个结点,然后再同步遍历两个链表,直到有相同结点
0 0
- 判断两链表相交的问题(分有环和无环,以及求第一个相交结点)
- 编程之美-编程判断两个链表(可能含环)是否相交以及相交的第一个结点
- 数据结构 - 如何判断两个无环单链表是否相交;如果相交,给出相交的第一个结点
- 单向链表相交的第一个公共结点, 判断链表是否有环以及环的入口节点
- 如何求两个相交链表的第一个相交结点
- 3.6 判断两个无环链表是否相交 & 找出相交的第一个结点
- 两个单链表的相交问题,第一个公共结点
- 1)两链表的第一个公共结点 2)判断两链表是否相交
- 判断两个链表是否相交,如果相交如何找到第一个相交结点。
- 求两个相交链表相交的第一个元素
- 判断链表有环没环及环的入口结点问题 和 判断两个链表是否相交
- 两个单向链表,判断它们是否相交,若相交,找出它们的第一个公共的结点
- 判断两链表是否相交,如果相交找到第一个交点
- 判断2个单链表是否相交,并求出第一个相交结点
- 【面试题】-判断两个单链表是否相交并求出相交的第一结点
- 判断两个链表是否相交,若相交,求第一个交点
- 第7题 微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交,并找出第一个相交结点。
- 7.微软亚院之编程判断俩个链表是否相交(如果需要求出俩个链表相交的第一个节点)
- 记VS2008初始化Microsoft Visual Sourcesafe源代码管理提供程序时失败
- 使用WCF 4.0 构建 REST Service
- 《算法导论(第三版)》(一)
- [MySQL]常见问题篇
- ViewController生命周期详解
- 判断两链表相交的问题(分有环和无环,以及求第一个相交结点)
- oracle合并查询
- android 视频开发2分之2(仿美拍,糗百)
- linux(centos)搭建SVN服务器 (ubuntu同)
- Harry Potter and the Goblet of Fire
- NSDate
- OAuth 2.0系列教程
- android ndk/jni
- NLSRTL