#include<stdio.h>
#include<stdlib.h>
typedef struct lnode //定义链表
{
int data;
struct lnode *next;
}lnode,*linklist;
void createfifo(linklist &l,int n) //创建先进先出函数
{
int i;
linklist p,q;
l=(linklist)malloc(sizeof(lnode));
q=l;
for(i=0;i<n;i++)
{
p=(linklist)malloc(sizeof(lnode));
scanf("%d",&p->data);
q->next=p;
q=p;
}
q->next=NULL;
}
void print(linklist l) //输出函数
{
linklist p;
p=l->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
void hebing(linklist l1,linklist l2,linklist &l3) //合并函数
{
linklist p1,p2,p3;
l3=(linklist)malloc(sizeof(lnode));
l3->next=NULL;
p1=l1->next;
p2=l2->next;
p3=l3;
while(p1)
{
p3->next=p1;
p3=p1;
p1=p1->next;
p3->next=p2;
p3=p2;
p2=p2->next;
}
//p3->next=NULL;(当l1与l2长度相同时)
p3->next=p1?p1:p2;
}
void main() //主函数
{
linklist l,l2,l3;
int n,m;
printf("请输入链表l的元素个数:\n");
scanf("%d",&n);
printf("请输入%d个元素:\n",n);
createfifo(l,n);
printf("请输入链表l2的元素个数:\n");
scanf("%d",&m);
printf("请输入%d个元素:\n",m);
createfifo(l2,m);
hebing(l,l2,l3);
printf("链表l3为:\n");
print(l3);
}