#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct node)
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;
//用尾指针表示带头结点的单循环链表的建立:
linklist *hcirl_creat()
{int x;
linklist *head,*p,*rear;
head=(struct node*)malloc(LEN);
head->data=-999;
rear=head;
printf("\n\t请输入整数以0结尾\n");
scanf("%d",&x);
while(x!=0)
{p=(struct node*)malloc(LEN);
p->data=x;
rear->next=p;
rear=p;
scanf("%d",&x);
}
rear->next=head;
return rear;}
//单循环链表的遍历运算
void print_circular( linklist *rb)
{linklist *p,*head;
int m=0;
head=rb->next;
p=head->next;
while(p!=head)
{ printf("%5d",p->data);
p=p->next;
m++;
if((m+1)%10==0) printf("\n");
}printf("\n");
}
//建立两个用尾指针表示的带头结点的单循环链表A和B 输出A和B 再利用原空间将B链接到A后 合成C 并输出C
void main()
{
linklist *ra,*rb,*rc,*head;
ra=hcirl_creat();
rb=hcirl_creat();
head=ra->next;
ra->next=rb->next->next;
free(rb->next);
rb->next=head;
rc=rb;
print_circular(rb);
}