#include<iostream>
struct ListNode{
int val;
ListNode* next;
ListNode(int x):val(x),next(NULL){}
};
//计算每个链表的长度
int Cal_list_len(ListNode* l)
{
int length=0;
while(l)
{
l=l->next;
length++;
}
return length;
}
int main()
{
ListNode a(0); //节点变量,用成员函数进行初始化
ListNode a1(1);
ListNode a2(2);
ListNode a3(3);
ListNode a4(4);
a.next=&a1;
a1.next=&a2;
a2.next=&a3;
a3.next=&a4;
a4.next=NULL;
ListNode b(6);
ListNode b1(8);
ListNode b2(3);
ListNode b3(4);
b.next=&b1;
b1.next=&b2;
b2.next=&b3;
b3.next=&a2;
int len_a= Cal_list_len(&a);
int len_b=Cal_list_len(&b);
std::cout<<"the length are: "<<std::endl;
std::cout<<len_a<<std::endl;
std::cout<<len_b<<std::endl;
int delta;
ListNode* p=&a;
ListNode* q=&b;
//走到相同的位置
std::cout<<"the common node: "<<std::endl;
if(len_a>len_b)
{
delta = len_a-len_b;
while(p && delta)
{
p=p->next;
delta--;
}
}
else
{
delta=len_b-len_a;
while(q && delta)
{
q=q->next;
delta--;
}
}
while(p && q)
{
if(p==q) std::cout<< p->val<<std::endl;
p=p->next;
q=q->next;
}
return 0;
}
查找两个链表的公共结点(链表法)
最新推荐文章于 2022-08-08 11:26:19 发布