首页 > 代码库 > 10.两个单链表相交,计算相交点
10.两个单链表相交,计算相交点
10.两个单链表相交,计算相交点
思路1:
分别遍历两个单链表,计算出它们的长度M和N,假设M比N大,则长度M的链表先前进M-N,然后两个链表同时以步长1前进,前进的同时比较当前的元素,如果相同,则必是交点。
Node* getIntersectPoint(Node* Head1,Node* Head2)
//两链表相交,计算相交点Node* getIntersectPoint(Node* Head1,Node* Head2){ int len1=numOfNodes(Head1); int len2=numOfNodes(Head2); int initMove=abs(len1-len2); Node* p1=Head1; Node* p2=Head2; if(len1>len2) { for(int i=0; i<initMove; i++) p1=p1->next; } else { for(int i=0; i<initMove; i++) p2=p2->next; } while(p1!=NULL && p2!=NULL) { if(p1==p2) { return p1; } p1=p1->next; p2=p2->next; } return NULL;}
思路2:
将指针p1,p2定位到两个链表的尾部,然后同时将两个指针前移(不可以,因为是单向链表)
10.两个单链表相交,计算相交点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。