#include<stdio.h>
#include<malloc.h>
typedef struct node
{
int date;
struct node *next;
}node,*lnode;
void createlist(lnode &l,int n); //在链表 后边不断插入正序插入链表
void createlist2(lnode &l,int n); //在链表 前边一位不断插入节点
void display(lnode l); //显示链表
void display2(lnode l);
void allinlist(lnode &l1,lnode &l2,lnode &l3);
void inlist(lnode &l,int i,int e);//插入e 在i的位置上
void deletelist(lnode &l,int i);//删除e 在i的位置上
int main()
{
int i,e,count1,count2;
lnode l1,l2,l3;
printf("输入第一个链表的数目:");
scanf("%d",&count1);
createlist(l1,count1);
printf("输入第二个链表的数目:");
scanf("%d",&count2);
createlist(l2,count2);
allinlist(l1,l2,l3);
display(l3);
printf("\n");
display(l1);
printf("\n");
display(l2);
return 0;
}
void createlist(lnode &l,int n)
{
int i;
lnode p,q;
l=(lnode)malloc(sizeof(node));
l->next=NULL;
q=l;
printf("输入%d个数据\n",n);
for(i=0;i<n;i++)
{
p=(lnode)malloc(sizeof(node));
scanf("%d",&p->date);
q->next=p;
q=q->next;
}
q->next=NULL;
}
void createlist2(lnode &l,int n)
{
int i;
lnode p;
l=(lnode)malloc(sizeof(node));
l->next=NULL;
printf("输入数据\n");
for(i=0;i<n;i++)
{
p=(lnode)malloc(sizeof(node));
scanf("%d",&p->date);
p->next=l->next;
l->next=p;
}
}
void display(lnode l)
{
lnode p;
p=l->next;
while(p!=NULL)
{
printf("%d ",p->date);
p=p->next;
}
/* for(p=l->next;p!=NULL;p=p->next)
{
printf("%d ",p->date);
}
*/
}
void display2(lnode l)
{
if(l==NULL)
{
return;
}
else
{
printf("%d",l->date);
// l=l->next;
display2(l->next);
}
}
void inlist(lnode &l,int i,int e)
{
lnode p,s;
p=l;
int j;
j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
s=(lnode)malloc(sizeof(node));
s->date=e;
s->next=p->next;
p->next=s;
}
void deletelist(lnode &l,int i)
{
lnode p;
p=l;
int j;
j=0;
while(p&&j<i-1)
{
j++;
p=p->next;
}
p->next=p->next->next;
}
void allinlist(lnode &la,lnode &lb,lnode &lc)
{
lnode pa,pb,pc;
pa=la->next;
pb=lb->next;
lc=pc=la;
while(pa&&pb)
{
if(pa->date<=pb->date)
{
pc->next=pa;
pc=pc->next;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pc->next;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
}
链表 归并
最新推荐文章于 2022-01-15 22:20:24 发布