我有一个简单的链表和这个结构体:
typedef struct exam {
char name[100];
int credits;
int grade;
struct exam* next;
} Exam;我想用字典的方式排序,考虑到:名字按字母顺序排序,学分和等级按新月顺序排序
学分和等级都是正数,可以采用任何dsired数字。
你会怎么做呢?
谢谢!
发布于 2020-05-17 07:07:43
您需要按优先级顺序比较每个字段,并在此基础上分配排序。例如:
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;
}
}这将首先按名称对考试进行排序,然后按学分排序,然后按成绩排序。
https://stackoverflow.com/questions/61844745
复制相似问题