全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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小时内与您取得联系。