#include <stdio.h> //应用函数包含
#include<malloc.h>
#define I 3 //常量定义
#define J 5
typedef struct Lnode //定义节点类型
{
int data;
struct Lnode *next; //定义指针
}Lnode; //节点
int creat(Lnode *L,int j)
{
int i;
Lnode *p,*q; //定义指针
q=L;
for (i=0;i<j;i++) //for循环建立链表
{
p=(Lnode*)malloc(sizeof(Lnode));//申请空间
if(!p) return 0; //检验是否申请成功
scanf("%d",&p->data);
q->next=p;
q=p; //链表链接
}
q->next=L; //尾指针指向头节点
return 1;
} //建立链表
int add(Lnode *La,Lnode *Lb)
{
Lnode *p,*q,*r;
p=La->next;
q=Lb->next;
r=La; //将a的链表头作为合成链表头
for(;(p!=La)&&(q!=Lb);)
{
if((p->data)<(q->data))
{
r->next=p;
r=p; //链表合成步骤
p=p->next;
} //链表合成
else
{
r->next=q;
r=q; //同上
q=q->next;
}
}
if(p!=La) r->next=p;
else
for(;q!=Lb;r=q,q=q->next)
r->next=q; //检验是那个链表结束并将未结束的链表继续连接
r->next=La; //将合成链表尾节点指向头结点
return 1;
} //合并链表
int output(Lnode *L)
{
Lnode *p;
p=L->next; //将地址给指针p
for(;p!=L;p=p->next)
{
printf("%d ",p->data); //循环输出所有元素
}
printf("n");
return 1;
} //输出链表
int main()
{
Lnode *La,*Lb;
Lnode list1,list2; //定义指针及函数
La=&list1;
Lb=&list2; //使指针指向函数
printf("请输入""%d""个链表La数据并按回车键结束:n",I);
creat(La,I);
printf("请输入""%d""个链表Lb数据并按回车键结束:n",J);
creat(Lb,J); //调用函数建立链表
add(La,Lb);
printf("合成链表数据:n");
output(La); //相加及输出
return 1;
} //主函数结束
百度搜索“爱华网”,专业资料,生活学习,尽在爱华网