我有一份学生名单,他们在C中订购了他们的注册号码:
typedef struct student_type_ {
int number;
char name[20];
char surname[20];
struct stud_type_ *next_student;
} student_type;
现在我想制作另一个指向该列表元素的指针列表,该列表按字母顺序排列,并考虑名称。
typedef struct sort_list_ {
struct student_type_ *student_data;
struct sort_list *next_student;
} sort_list;
因此我想首先创建一个与student_type大小相同的新sort_list,但我没有做对......在C中有一种简单而优雅的方法吗?
答案 0 :(得分:1)
作为一般设计规则,始终将数据与数据的表示分开。这将使您的代码更清晰,更优雅。
我的建议:制作一个仅包含学生信息的student_data
结构。然后创建两个单独的列表 - 一个按注册号排序,另一个按名称排序。
typedef struct student_data_ {
int number;
char name[20];
char surname[20];
} student_data;
typedef struct sorted_student_list_ {
struct student_data_ *student;
struct sorted_student_list_ *next;
} sorted_student_list;
...
sorted_student_list sorted_students_by_reg_number;
sorted_student_list sorted_students_by_name;