/*
题目:给定两个单链表,编写算法找出两个链表的公共结点。
出自:王道p38.8
*/
//思路:定义两个指针,分别指向两个头结点,计算出两个链表的长度,在算出两个长度之间的差值k,让指向较长链表的指针先走k步,然后两指针一起走,就会同时到达公共结点。
//宏定义
#define ElemType int
//单链表定义
typedef struct LNode{
ElemType val;
struct LNode*next;
}*LinkList,LNode;
[注] 上述宏定义和结构体定义是答题时要写的答案,并不是代码实现时的定义,代码实现稍有不同,感兴趣可去“help.h”中查看。
//实现函数
LNode_n* WD_38_8(LinkList_n l1,LinkList_n l2){
LNode_n*p1=l1,*p2=l2;
int len1=0,len2=0;
while(p1){ //统计链表1长度
p1=p1->next;
len1++;
}
while(p2){ //统计链表2长度
p2=p2->next;
len2++;
}
p1=l1,p2=l2;
int dis=len1-len2; //计算长度差
if(dis<0)while(dis+&