c - 在 C 中考虑 3 个参数对链表进行排序的通用方法
问题描述
我有这个结构的简单链表:
typedef struct exam {
char name[100];
int credits;
int grade;
struct exam* next;
} Exam;
我想按字典顺序对它进行排序,考虑到:名称按字母顺序排序,学分和等级按新月方式排序
学分和成绩都是正数,可以假设任何所需的数字。
你会怎么做?
谢谢!
解决方案
您需要按优先级顺序比较每个字段并基于此分配顺序。例如:
int cmp_examp(Exam *e1, Exam *e2)
{
if (strcmp(e1->name, e2->name) < 0) {
return -1;
} else if (strcmp(e1->name, e2->name) > 0) {
return 1;
} else if (e1->credits < e2->credits) {
return -1;
} else if (e1->credits > e2->credits) {
return 1;
} else if (e1->grade < e2->grade) {
return -1;
} else if (e1->grade > e2->grade) {
return 1;
} else {
return 0;
}
}
这首先按名称排序考试,然后按学分,然后按等级。
推荐阅读
- sqlite - 如何在 SQLite 中获取分层树路径?
- reactjs - reactjs中的警报
- xamarin - MvvmCross 6.0 在关闭当前视图模型之前导航到视图模型
- python - Python函数通过记忆返回不同的结果
- .net - 用于桌面应用程序的受 OpenID Connect 保护的 API
- r - 无法使用 R Shiny 中的 DT 包取消选择代理选择的行
- c# - 我的 C# 程序正在使用过多的内存(BinaryReader 来缓冲)
- php - PHP 从 html 文件中提取特定标签之间的数据
- ios - iOS Swift - 从设置打印到标签
- node.js - AWS Elastic beanstalk 上的 Google 日历身份验证