160-相交链表
leetcode题解——相交链表
题目如下
编写一个程序,找到两个单链表相交的起始节点。
解题思路
- 求A和B的长度
- 设两个指针a和b分别指向链表A和B,指针指向的位置由两个链表的长度差决定
- 同步遍历两个链表,若两个指针指向同一个地址,则这个结点为相交结点
- 否则两个链表不相交
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
//相交链表
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
struct ListNode *a=headA, *b=headB;
int len_a=0, len_b=0;
while(a){
a=a->next;
len_a++;
}
while(b){
b=b->next;
len_b++;
}
a=headA;
b=headB;
while(len_a!=len_b){
if(len_a>len_b){
a=a->next;
len_a--;
}else if(len_a<len_b){
b=b->next;
len_b--;
}
}
while(a&&b){
if(a==b){
return a;
}else{
a=a->next;
b=b->next;
}
}
return NULL;
}

浙公网安备 33010602011771号