链表的两个节点相等是,表示地址相等,还是链表中的val相等?
//链表相交问题;
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
struct ListNode *p1,*p2,*temp;
int a,b, time;
p1=headA ,p2=headB;
a=max_length(headA);
b=max_length(headB);
temp=NULL;
//保证同一起点;
if(a>b)
{
time=a-b;
while(time--)
p1=p1->next;
}
else
{
time=b-a;
while(time--)
p2=p2->next;
}
//找到相同的位置;
while(p1&&p2)
{
if(p1==p2)
{
temp=p1;
break;
}
p1=p1->next;
p2=p2->next;
}
return temp;
}
int max_length(struct ListNode *head){ //分别计算链表的长度;
int a=0;
while(head)
{
a++;
head=head->next;
}
return a;
}
//这里面的p1==p2,表示的是p1与p2所指向的地值相等吗?;
这边的定义已经很清楚了,是地址相同。