#include<iostream>
#include<set>
struct ListNode
{
int val;
ListNode* next;
ListNode(int x):val(x),next(NULL){}
};
int main()
{
//定义一个集合
//集合主要有去重的功能,集合中的元素都是唯一的
std::set<ListNode*> test_set;
ListNode A_head(0);
ListNode a1(1);
ListNode a2(2);
ListNode a3(3);
A_head.next=&a1;
a1.next=&a2;
a2.next=&a3;
a3.next=NULL;
ListNode B_head(5);
ListNode b1(1);
//ListNode b2(6);
//ListNode b3(3);
B_head.next=&b1;
b1.next=&a2;
//函数传递的时候,形参为*p指针类型,实参为&地址类型;函数中可以直接使用->
//获取结构体的头指针才可以使用->,所以要定一个指向结构体变量的指针
ListNode *p=&A_head;
while(p)
{
test_set.insert(p);
// std::cout<<p->val<<std::endl;
p=p->next;
}
ListNode *q=&B_head;
while(q)
{
if(test_set.find(q)!=test_set.end()){
std::cout<<q->val<<std::endl;
}
q=q->next;
}
return 0;
}