C语言中数据结构之链表归并排序实例代码

问题
设有两个无头结点的单链表,头指针分别为ha,hb,链中有数据域data,链域next,两链表的数据都按递增排序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中ha表中已有的数据若hb中也有,则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏。
源程序
#include <stdio.h>
#include<stdlib.h>
#define N1 6 /*链表La的长度*/
#define N2 6 /*链表Lb的长度*/
struct listnode
{
int data;
struct listnode *next;
};
void createlist(struct listnode * *,int);
void listinsert(struct listnode * *,struct listnode * *);
void readlist(struct listnode *);
int main()
{
struct listnode *ha=NULL,*hb=NULL;
printf("请按照升序序列输入以下数字以建立链表La\n");
printf("Please Input %d numbers:",N1);
createlist(&ha,N1);
printf("请按照升序序列输入以下数字以建立链表Lb\n");
printf("Please Input %d numbers:",N2);
createlist(&hb,N2);
listinsert(&ha,&hb);
readlist(ha);
printf("\n");
}
void createlist(struct listnode * *p,int n)
{ /*尾插法建立链表*/
struct listnode *t,*q;
int i;
t=(struct listnode *)malloc(sizeof(struct listnode));
scanf("%d",&t->data);
*p=t;
q=t;
for(i=n-1;i>0;i--)
{
t=(struct listnode *)malloc(sizeof(struct listnode));
scanf("%d",&t->data);
q->next=t;
q=t;
}
q->next=NULL;
}
void listinsert(struct listnode * *a,struct listnode * *b)
{ /*将两个链表按递增序列排序*/
struct listnode *pa,*pb,*other,*la,*pre;
la=(struct listnode *)malloc(sizeof(struct listnode));
la->next=*a;
pa=*a;
pb=*b;
pre=la;
while(pa&&pb)
{
if(pa->data<pb->data)
{
pre=pre->next;
pa=pa->next;
}
else if (pa->data>pb->data)
{
other=(struct listnode *)malloc(sizeof(struct listnode));
other->data=pb->data;
other->next=pa;
pre->next=other;
pre=other;
pb=pb->next;
}
else
{
pre=pre->next;
pa=pa->next;
pb=pb->next;
}
}
if(!pa)
{
while(pb)
{
other=(struct listnode *)malloc(sizeof(struct listnode));
other->data=pb->data;
pre->next=other;
pre=pre->next;
pb=pb->next;
}
pre->next=NULL;
}
*a=la->next;
free(la);
}
void readlist(struct listnode *p)
{ /*遍历链表并输出最终结果*/
struct listnode *q;
q=p;
printf("链表的排序结果为:\n");
while(q!=NULL)
{
printf("%3d",q->data);
q=q->next;
}
printf("\n");
}
运行结果
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# 数据结构之链表归并排序
# C语言链表归并排序
# c语言实现的几种常用排序算法
# C语言实现单链表的快速排序算法
# C语言中的结构体快排算法
# 链表
# 升序
# 也有
# 遍历
# 数据结构
# 希望能
# 分别为
# 谢谢大家
# 中不
# 不归
# 无头
# 并到
# 链中
# pre
# gt
# include
# cpp
# lt
# brush
# class
相关文章:
孙琪峥织梦建站教程如何优化数据库安全?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何通过PHP快速构建高效问答网站功能?
建站之星如何防范黑客攻击与数据泄露?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
建站之星如何优化SEO以实现高效排名?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
制作网站怎么制作,*游戏网站怎么搭建?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何破解联通资金短缺导致的基站建设难题?
如何在景安服务器上快速搭建个人网站?
深圳网站制作平台,深圳市做网站好的公司有哪些?
建站主机类型有哪些?如何正确选型
广东企业建站网站优化与SEO营销核心策略指南
成都响应式网站开发,dw怎么把手机适应页面变成网页?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
如何在VPS电脑上快速搭建网站?
如何快速生成高效建站系统源代码?
SQL查询语句优化的实用方法总结
山东网站制作公司有哪些,山东大源集团官网?
小程序网站制作需要准备什么资料,如何制作小程序?
建站之星微信建站一键生成小程序+多端营销系统
平台云上自助建站如何快速打造专业网站?
如何高效搭建专业期货交易平台网站?
如何用西部建站助手快速创建专业网站?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
定制建站是什么?如何实现个性化需求?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
制作网站的软件免费下载,免费制作app哪个平台好?
公司网站设计制作厂家,怎么创建自己的一个网站?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
,sp开头的版面叫什么?
高端建站三要素:定制模板、企业官网与响应式设计优化
昆明高端网站制作公司,昆明公租房申请网上登录入口?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
在线制作视频网站免费,都有哪些好的动漫网站?
建站之星如何快速更换网站模板?
制作网站公司那家好,网络公司是做什么的?
网站制作报价单模板图片,小松挖机官方网站报价?
如何在阿里云ECS服务器部署织梦CMS网站?
独立制作一个网站多少钱,建立网站需要花多少钱?
电商平台网站制作流程,电商网站如何制作?
网站代码制作软件有哪些,如何生成自己网站的代码?
在线教育网站制作平台,山西立德教育官网?
如何通过二级域名建站提升品牌影响力?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
*请认真填写需求信息,我们会在24小时内与您取得联系。