include
include
typedef struct Node
{
char data;
struct Node *next;
}Node,*Linklist;//先定义、后使用
int len;
Linklist Createlist(int *array,int len)
{
Linklist head,temp,ptr;
int i;
head=(Node*)malloc(sizeof(Node));
if(!head)
{printf("内存分配失败!");return NULL;}
head->next=NULL;
head->data=array[0];
temp=head;
for(i=0;i<len;i++)
{
ptr=(Node*)malloc(sizeof(Node));
if(!ptr)
{printf("内存分配失败!");return NULL;}
ptr->data=array[i];
temp->next=ptr;
temp=temp->next;
}
ptr->next=head;
return head;
}//建立循环链表 ,只有head的指针域为空
Linklist Merge(Linklist LA,Linklist LB)
{
Linklist p=LA,q=LB;
p=(Linklist)malloc(sizeof(Node));q=(Linklist)malloc(sizeof(Node));
while(p->next!=LA)p=p->next;while(q->next!=LB)q=q->next;//查找最后链表最后一位。哪里不对?
p->next=LB->next;q->next=LA;
free(LB);
do{
printf("%c,\n",LA->data);
LA=LA->next ;
}while(LA!=NULL);
return(LA);//两个链表连接,形成环
}
int main()
{
int A[100],B[100],lenA,lenB,i;
Linklist La,Lb;
printf("\ninput lenA lenB:\n");scanf("%d %d",&lenA,&lenB);
printf("\ninput A[i]:\n");
for(i=0;i<lenA;i++)
scanf("%d",&A[i]);
printf("\ninput B[i]:\n");
for(i=0;i<lenB;i++)
scanf("%d",&B[i]);
La=Createlist(A,lenA);Lb=Createlist(B,lenB);
Merge(La,Lb);
getch();
//return 0;
}