C语言 链表数据的排序

您所在的位置:网站首页 c语言对一组数据排序怎么算的 C语言 链表数据的排序

C语言 链表数据的排序

2024-07-09 16:23:24| 来源: 网络整理| 查看: 265

C语言使用链表时,有些时候会对链表中的数据进行排序。下边介绍使用链表时可用的排序方法,冒泡排序和选择排序。

此链表排序仅对链表中的数据进行排序,如果想进行对整个结构体的排序,也就是利用数据顺序来调整节点中的信息,需要对节点进行交换,但与此方法不同,望读者周知。

测试排序代码请先参考下边完整的测试代码。 编程环境:Visual C++ 6.0.

冒泡排序 NODE* bubblesort(NODE* Head) { NODE *pfirst=NULL,*psecond=NULL,*pend=NULL; pfirst=Head; psecond=Head; int temp; while(pfirst != pend) //外循环 { //pfirst != pend 很有意思 while(pfirst->next != pend)//内循环 { if(pfirst->date > pfirst->next->date) { temp=pfirst->date; pfirst->date=pfirst->next->date; pfirst->next->date=temp; } pfirst=pfirst->next; } pend=pfirst;//减少最后的已排好的循环 pfirst=Head; } return Head; } 选择排序 /*链表的选择排序*/ NODE* selectsort(NODE* head) { NODE *pfirst=NULL,*psecond=NULL,*pend=NULL; pfirst=head; psecond=head; int temp; while(pfirst != pend) //外循环 { while(pfirst->next != pend)//内循环 { if(psecond->date > pfirst->next->date) { temp=psecond->date; psecond->date=pfirst->next->date; pfirst->next->date=temp; } pfirst=pfirst->next; } psecond=psecond->next; pfirst=psecond; } return head; } 测试代码 /* *链表排序 Writen by YU */ #include #include /*结果输出查看*/ void endscan() { printf("\n点击回车继续..."); fflush(stdin); getchar(); } /*结构体*/ struct node { int date; struct node *next; }; typedef struct node NODE; //把struct node 定义为 NODE int count = 0; /*创建链表并输入数据*/ NODE* creat() { NODE *pHead=NULL,*pNew,*pEnd; printf("输入数据,当输入0时停止\n"); pNew=(NODE*)malloc(sizeof(NODE)); scanf("%d",&pNew->date); while(pNew->date != 0) { count++; if(count == 1) //如果为头节点 { pNew->next = NULL; pEnd = pNew; pHead = pNew; } else //如果不是头结点 { pNew->next=NULL; pEnd->next=pNew; pEnd=pNew; } pNew=(NODE*)malloc(sizeof(NODE)); scanf("%d",&pNew->date); } free(pNew); return pHead; } /*输出链表*/ void print(NODE* Head) { NODE* p=Head; while(p!=NULL) { printf("%d ",p->date); p=p->next; } } /*链表的冒泡排序*/ NODE* bubblesort(NODE* Head) { NODE *pfirst=NULL,*psecond=NULL,*pend=NULL; pfirst=Head; psecond=Head; int temp; while(pfirst != pend) //外循环 { //pfirst != pend 很有意思 while(pfirst->next != pend)//内循环 { if(pfirst->date > pfirst->next->date) { temp=pfirst->date; pfirst->date=pfirst->next->date; pfirst->next->date=temp; } pfirst=pfirst->next; } pend=pfirst;//减少最后的已排好的循环 pfirst=Head; } return Head; } /*链表的选择排序*/ NODE* selectsort(NODE* head) { NODE *pfirst=NULL,*psecond=NULL,*pend=NULL; pfirst=head; psecond=head; int temp; while(pfirst != pend) //外循环 { while(pfirst->next != pend)//内循环 { if(psecond->date > pfirst->next->date) { temp=psecond->date; psecond->date=pfirst->next->date; pfirst->next->date=temp; } pfirst=pfirst->next; } psecond=psecond->next; pfirst=psecond; } return head; } int main() { NODE* pHead=NULL; pHead=creat(); printf("排序前:\n"); print(pHead); // pHead=bubblesort(pHead); //冒泡排序 pHead=selectsort(pHead); //选择排序 printf("\n排序后:\n"); print(pHead); endscan(); return 0; }


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭