怎么用递归实现两个集合并集

如何用递归实现两个集合并集部分代码:struct Node{int numNode *next}Node *headNode *merge(Node *he

如何用递归实现两个集合并集
部分代码:struct Node
{

int num;
Node *next;
};
Node *head;
Node *merge(Node *head1,Node *head2)
{
if(head1==NULL)
return head2;
if(head2==NULL)
return head1;
Node *head=NULL;
if(head1->num<head2->num)

{
head=head1;
head->next=merge(head1->next,head2);

}
else
{
head=head2;
head->next=merge(head1,head2->next);
}
return head;

}
主要是主函数不懂怎么写,求各位指点。(如实现{1,3,5,7,9}与{2,4,6,8,10}两个集合的并集)

[解决办法]

C/C++ code
#include<stdio.h>struct Node{        int num;    Node *next;};Node *merge(Node *head1,Node *head2){    if(head1==NULL)        return head2;    if(head2==NULL)        return head1;    Node *head=NULL;    if(head1->num<head2->num)            {        head=head1;        head->next=merge(head1->next,head2);            }    else    {        head=head2;        head->next=merge(head1,head2->next);    }    return head;    }void main(){    struct Node head1[5], head2[5];    int i;    for(i=1; i <= 9; i += 2)    {        head1[i/2].num = i;        if( i != 9 )        {            head1[i/2].next = &head1[i/2 + 1]; //用指针连接两个结构体        }        else        {            head1[i/2].next = NULL;        }    }    for(i=2; i <= 10; i += 2)    {        head2[(i-1)/2].num = i;        if( i != 10 )        {            head2[(i-1)/2].next = &head2[i/2];        }        else        {            head2[(i-1)/2].next = NULL;        }    }    struct Node *head;    head = merge(&head1[0], &head2[0]);    struct Node *p = head;    while( p != NULL )    {        printf("%d ", p->num);        p = p->next;    }}
[解决办法]
C/C++ code
Node *get(int n){Node *p=new Node;p->num=n;p->next=0;return }int main(){int arr1[5]={1,3,5,7,9};int arr2[5]={2,4,6,8,10};Node *head,*pre=0;for(int i=0;i<5;i++){herd=merge(get(arr1[1]),pre);pre=head;}for(int i=0;i<5;i++){herd=merge(get(arr2[1]),pre);pre=head;}