题目大意:给出两个链表,寻找出两个链表的汇聚节点。
算法思想:
1.分别遍历两个链表,将链表中的节点存入容器中。
2.扫描两个容器找出汇聚节点,如果不存在汇聚节点返回NULL。
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if(headA==NULL||headB==NULL) return NULL;
deque<ListNode*> Anode,Bnode;
ListNode* p=headA;
while(p!=NULL){
Anode.push_front(p);
p=p->next;
}
p=headB;
while(p!=NULL){
Bnode.push_front(p);
p=p->next;
}
deque<ListNode*>::iterator pos1,pos2;
for(pos1=Anode.begin(),pos2=Bnode.begin();pos1!=Anode.end()&&pos2!=Bnode.end();++pos1,++pos2){
if(*pos1!=*pos2)
break;
p=*pos1;
}
return p;
}
};