c语言结构体排序(C语言中结构体数据排序)

:暂无数据 2026-09-26 04:50:02 :0

c语言结构体排序(C语言中结构体数据排序)

大家好,关于c语言结构体排序很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于C语言中结构体数据排序的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

C语言中结构体数据排序

设结构体名为AAA,结构体数组声明为struct AAA a[N];(N为宏定义常量),身份证成员名为id,则排序函数可如下写——

#include “stdio.h“
#include 《string.h》
#define N 3
struct AAA{
char id;
int age;
};
void mysort(struct AAA *p){//排序函数
struct AAA t;
int i,j,k;
for(i=0;i《N;i++){
for(k=i,j=k+1;j《N;j++)
if(strcmp((p+j)-》id,(p+k)-》id)《0)
k=j;
if(i!=k)
t=*(p+k),*(p+k)=*(p+i),*(p+i)=t;
}
}
int main(int argc,char *argv){//测试主函数
struct AAA a[N]={{“650104194812109907“,77},{“333018201801015555“,1},{“650104194812109903“,80}};
mysort(a);
printf(“%s\t%d\n“,a.id,a.age);
printf(“%s\t%d\n“,a.id,a.age);
printf(“%s\t%d\n“,a.id,a.age);
return 0;
}

运行结果:

C语言 结构体如何排序

由于你只是交换字符串,所以修改如下,请检验。
定义一个字符串数组 char sn;
交换时进行如下修改
strcpy(sn,library.book[k].number);
strcpy(library.book[k].number,library.book[i].number);
strcpy(library.book[i].number,sn);

用strcpy(s1,s2)进行复制字符串,不能直接s1=s2。
#include《stdio.h》
#include 《time.h》
typedef struct
{
char number;//书号
char name;//书名
char author;//作者
char publish;//出版社
char time;//出版时间
float price;//单价
}mbook;
typedef struct
{
int count;//书的本数
mbook book;//最大可有书的数量
}mlibrary;
mlibrary library,t;

main()
{ void sort_by_price(void);
sort_by_price();
}
void sort_by_price(void) /*定义按价格排序函数*/
{
int i,j,k;
char sn;
for(i=0;i《library.count-1;i++)
{
k=i;
for(j=i+1;j《library.count;j++)
if(library.book[j].price《library.book[k].price)
k=j;
if(k!=i)
{
strcpy(sn,library.book[k].number);
strcpy(library.book[k].number,library.book[i].number);
strcpy(library.book[i].number,sn);
}
}
} ;

C语言利用结构体变量构成的单项链表怎么排序

首先定义一个结构体,如:
struct
studentData
{
char
sno;
/*学号*/
char
sname;
/*姓名*/
int
age;
/*年龄*/
int
score;
/*五门成绩*/
};
再定义构成单链表的结点:struct
student
{
/*数据域*/
struct
studentData
info;
struct
student
*next;/*指针域*/
};
下面是选择排序:void
OrderBySnoAsc(){
//以学号按升序排序
struct
student
*p,*q,*min;
struct
studentData
temp;
//交换时用到的临时变量
for(p=head;p
!=
NULL;p=p-》next){
min=p;
for(q=p-》next;q
!=
NULL;q=q-》next)
if(strcmp(min-》info.sno,q-》info.sno)》0)
min=q;
if(min!=p){
temp=min-》info;
min-》info
=p-》info;
p-》info=temp;
}
}
}
以下是冒泡排序:void
OrderBySnoAsc(){
//以学号按升序排序
struct
student
*p,*q;
struct
studentData
temp;
//交换时用到的临时变量

for(p=head;p!=NULL;p=p-》next)
{
for(q=head;q-》next!=NULL;q=q-》next)
{
if(strcmp(q-》info.sno,q-》next-》info.sno)》0)//相邻的两个之间比较
{
temp=q-》info;
q-》info
=q-》next-》info;
q-》next-》info=temp;

}
}
}
}

C语言,如何对结构体的不同成员排序一个结构体类型有5个成员,需要分别按这5个成员的关键字排序

还真是这样,当然,你可以做点手脚,牺牲下空间。比如在结构体里保存一个指向如何排序的引导,在比较函数里面再提取这个信息,判断是哪个字段,做什么比较。一般这种比较函数跟qsort一起用。

typedef struct {
int key;
double value;
} the_record;

int compare_function(const void *a,const void *b) {
the_record *x = (the_record *) a;
the_record *y = (the_record *) b;
return x-》key - y-》key;
}

C语言,结构体快排

自定义一个比较函数,直接调用快排库函数qsort即可。举例如下:

//#include “stdafx.h“//If the vc++6.0, with this line.
#include “stdio.h“
#include “stdlib.h“
#include “time.h“
struct ln{
  int data,score,math;
}ss;
int mycmp(const void *a, const void *b){//自定义比较函数
    return ((struct ln*)a)-》data-((struct ln*)b)-》data;//若要降序,-号前后变量交换
}//data改为score或math就可按相应要素排序
int main(void){//测试一下……
    int i;
    srand((unsigned)time(NULL));
    for(i=0;i《100;ss[i++].data=rand()%1000);
    qsort(ss,100,sizeof(struct ln),mycmp);
    for(i=0;i《100;printf(“%4d“,ss[i++].data));
    printf(“\n“);
    return 0;
}

OK,关于c语言结构体排序和C语言中结构体数据排序的内容到此结束了,希望对大家有所帮助。

c语言结构体排序(C语言中结构体数据排序)

本文编辑:admin

更多文章:


repercussions(都是余波,repercussions和aftermath有什么区别啊)

repercussions(都是余波,repercussions和aftermath有什么区别啊)

今天给各位分享都是余波,repercussions和aftermath有什么区别啊的知识,其中也会对都是余波,repercussions和aftermath有什么区别啊进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 09:00

dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)

dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)

本篇文章给大家谈谈dropdownlist 绑定,以及DropDownList 绑定所有项 并 显示指定项对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月11日 08:50

协方差计算公式(协方差的计算公式)

协方差计算公式(协方差的计算公式)

这篇文章给大家聊聊关于协方差计算公式,以及协方差的计算公式对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 08:10

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

本篇文章给大家谈谈易语言网页api接口怎么调用,以及易语言,怎么读取网页json的api对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 08:00

majority of(the majority of 和 a majority of的区别以及用法例句)

majority of(the majority of 和 a majority of的区别以及用法例句)

这篇文章给大家聊聊关于majority of,以及the majority of 和 a majority of的区别以及用法例句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:40

汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

最近更新

repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026-10-11 09:00:05 浏览:0
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026-10-11 08:50:04 浏览:0
majority of(the majority of 和 a majority of的区别以及用法例句)
2026-10-11 07:40:02 浏览:0
热门文章

标签列表