Node* findIntersection(Node* head1, Node* head2)
{
map<int,int>m;
Node* head=NULL;
Node* tail=NULL;
Node* p=head1;
while(p!=NULL)
{
m[p->data]++;
p=p->next;
}
p=head2;
while(p!=NULL)
{
if(m.find(p->data)!=m.end())
{
head=push(head,p->data,tail);
m[p->data]--;
if(m[p->data]==0)
m.erase(p->data);
}
p=p->next;
}
return head;
}