#include <iostream>
using namespace std;
struct Node
{
int data;
Node* next;
};
Node* Intersect(Node* head1, Node* head2)
{
if(head1 == NULL || head2 == NULL)
return NULL;
Node* head = NULL;
Node *cur = NULL;
while(head1 != NULL && head2 != NULL)
{
if(head1->data < head2->data)
head1 = head1->next;
else if(head1->data > head2->data)
head2 = head2->next;
else
{
Node* node = new Node();
node->data = head1->data;
node->next = NULL;
if(head == NULL)
head = cur = node;
else
cur->next = node, cur = node;
head1 = head1->next;
head2 = head2->next;
}
}
return head;
}
int main()
{
Node* head1, *head2;
head1 = head2 = NULL;
int i;
for(i = 4; i > 0; i--)
{
Node* node = new Node();
node->data = i;
node->next = head1;
head1 = node;
}
int elem[] = {5, 4, 2};
for(i = 0; i < 3; i++)
{
Node* node = new Node();
node->data = elem[i];
node->next = head2;
head2 = node;
}
Node* head = Intersect(head1, head2);
while(head != NULL)
{
cout << head->data << " ";
head = head->next;
}
// 释放资源就不写了
}