将两个链表合并成一个链表方法二
下面是小编为大家整理的将两个链表合并成一个链表方法二,供大家参考。
/* 链表的操作 1) 定义链表的结构;
2) 写函数创建链表;
3) 输入两个正数链表, 连接成一个非递减链表(用移动指针的方法)。
*/
# include <stdio.h>
# include <malloc.h>
# define null 0
typedef struct LNode
{
int data;
struct LNode *next;
}
LNode,*linklist;
linklist
creatlist ()
{
LNode *p,*L;
L=(LNode *)malloc(sizeof(LNode));
L->next=null;
L->data=0;
while(1)
{
p=(LNode *)malloc(sizeof(LNode));
scanf("%d",&p->data);
if(p->data==-1) break;
++L->data;
p->next=L->next;
L->next=p;
}
return L;
}
void
output(linklist L)
{
LNode *p;
printf("the follow is Linklist data:\n")
;
for(p=L->next;p!=null;p=p->next)
printf("%5d",p->data);
printf("\n the data is over.\n ");
}
void sort(linklist L)
{
linklist p,q;
int i,j;
for(i=1;i<L->data;i++)
{
for(j=0,p=L;j<L->data-i;j++)
{
if((p->next->data)>(p->next->next->data))
{
q=p->next;
p->next=q->next;
q->next=p->next->next;
p->next->next=q;
}
p=p->next;
}
}
}
linklist Mergelist(linklist L1,linklist L2,linklist L3)
{
linklist p1,p2,p3;
p1=L1->next;
p2=L2->next;
L3=p3=L1;
while(p1&&p2)
{
if((p1->data)<=(p2->data))
{p3->next=p1;p3=p1;p1=p1->next;}
else {p3->next=p2;p3=p2;p2=p2->next;}
}
p3->next=p1?p1:p2;
free(L2);
return L3;
}
main()
{
linklist Lb;linklist La,Lc;
La=creatlist();Lb=creatlist();
sort(La);sort(Lb);
output(La);output(Lb);
Lc=Mergelist(La,Lb,Lc); output(Lc);
getch();
}
推荐访问:将两个链表合并成一个链表方法二 链表 合并 两个
热门文章:
- 酒店总经理年度工作总结8篇2024-12-07
- 2023年度大一上学期期末个人总结800字10篇(完整)2024-12-07
- 2023年高三综评期末总结8篇2024-12-07
- 四年级科学的教学总结6篇【精选推荐】2024-12-06
- 期末颁奖总结3篇(范文推荐)2024-12-06
- 医院客服年终个人总结7篇2024-12-06
- 2023年度高校寒假安全教育主题班会总结12篇(2023年)2024-12-06
- 2023年有关学生期末个人总结7篇(范文推荐)2024-12-06
- 2023年度公司业务部年终总结10篇2024-12-06
- 园林绿化有限公司年度工作总结5篇【完整版】2024-12-06
相关文章:
- 两个确立的决定性意义研讨发言5篇2022-08-17
- 两个确立两个维护心得体会范本7篇2022-08-25
- 2022年两个确立两个维护心得体会素材(全文)2022-08-26
- 《小红帽》读后感作文合集2022-09-15
- 格林童话读后感50字2022-09-15