建立两个循环单链表,数据结构

请用cout<< <<endl;表示
输出相应链表
请输入第一个循环单链表的结点个数
请输入第一个循环单链表各个结点的值
请输入第二个循环单链表的结点个数
请输入第二个循环单链表各个结点的值
合并后的循环单链表:

#include <iostream>
using namespace std;
typedef struct _Linknode
{
      int data;
      _Linknode *next;
}LinkNode,*LinkList;
void createList(LinkNode &L)
{
      int n;
      cin>>n;
      LinkList q = &L;
      for(int i=0;i<n;i++)
      {
          LinkList p = (LinkList)(malloc(sizeof(LinkNode)));
          cin>>p->data;
          p->next = NULL;
          q->next = p;
          q = p;
      }
}
void unionList(LinkNode L1,LinkNode L2,LinkNode &L3)
{
      if(L1.next == NULL && L2.next == NULL)
            return;
      LinkList q = &L3;
      q->next = L1.next;
      while(q->next != NULL)
      {
         q = q->next;
      }
      q->next = L2.next;
}

void printList(LinkNode L)
{
     LinkList p = L.next;
      while(p != NULL)
      {
          cout<<p->data<<endl;
          p=p->next;
      }
}
int main()
{
      LinkNode L1,L2,L3;
      L1.next = NULL;
      L2.next = NULL;
      createList(L1);
      createList(L2);
      unionList(L1,L2,L3);
      printList(L3);
      return 0;
}