创建与C中的另一个列表大小相同的结构列表

时间:2014-05-11 10:29:33

标签: c list

我有一份学生名单,他们在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中有一种简单而优雅的方法吗?

1 个答案:

答案 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;