【 tulaoshi.com - 编程语言 】
                             
                            #includestdio.h   //预编译命令
  #includeiostream.h
  strUCt list//定义结构体
  {
   int num;
   list*next;
  };
  list*head,*end;         //定义全局变量list*creat()//创建链表的函数
  {
   list*p=NULL;
   list*q=NULL;
   head=NULL;
   int num;
   printf("Input number:");
   scanf("%d",&num);
   while(num!=0)
   {
    p=new list;      //开辟空间
    p-num=num;
    if(head==NULL)
     head=p;
    else
     q-next=p;
    q=p;
    scanf("%d",&num);
   }
   end=q;   //将链表的结尾最后一个结点赋给end
   end-next=head;  //让最后一个结点的的下个结点的地址不为空而指向头指针
   return(head);
  }void print(list*head)//打印循环链表的函数
  {
   int k=0;
   list*r=head;
   do
   {
    cout.width(2);
    k=k+1;
    coutk":"r-numendl;
    r=r-next;
   }while(r!=head);
  }void insert(list*pHead,list*pNode)   //插入接点的函数
  {
   list*q,*r;
   //第一种情况,链表为空
   if(pHead==NULL)
   {
    pHead=pNode;    //链表头指向pNode
    return;      //完成插入操作,返回
   } //第二种情况,pNode结点num的值小于链表头结点num的值
   //则将pNode的值插到链表头部
   if(pNode-num=pHead-num)
   {
    pNode-next=pHead;   
    pHead=pNode;    
    return;
   }
   //第三种情况,循环查找正确位置
   r=pHead;
   q=pHead-next;
   while(q!=pHead)
   {
    if(pNode-numq-num)
    {
     r=q;
     q=q-next;
    }
    else
     break;
   }
   r-next=pNode;
   pNode-next=q;
  }list*together(list*p1,list*p2)      //定义两个链表合并的函数
  {
   list*q,*r;
   q=p2;   
   do
   {
    r=new list;   //开辟空间
    r-num=q-num;  //将q的值赋给r
    r-next=NULL;       //让r的下一个指针的地址为空,目的是使它成为一个独立的结点
    insert(p1,r);  //调用插入结点的函数
    q=q-next;   //指针向后拨一个接点
   }while(q!=p2);   //当在最后一个结点时停止循环
   return(p1);    //返回头指针
  }void main()   //主函数
  {
   list*list1,*list2;
   printf("Input list1");
   printf("If number is 0,stop inputing");
   printf("数据请从小到大输入");
   list1=creat();    //调用创建链表的函数
   print(list1);    //打印第一个链表     
   printf("Input list2");
   printf("If number is 0,stop inputing");
   printf("数据请从小到大输入");
   list2=creat();   //调用创建链表的函数
   print(list2);   //打印第二个循环链表 head=together(list1,list2);    //调用合并两个链表的函数
   printf("The new list is:");
   print(head);       //打印最后结果
  }