2014-05-11 3 views
0

의 다른 목록과 같은 크기가 C에서 자신의 등록 번호를 주문 구조체의 목록 작성 :나는 학생들의 목록을 가지고 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

, 당신은'구조체 student_type_ * sorted_next 같은'student_type_' 구조의 또 다른'next' 포인터를 가질 수있다;'그럼 당신은 동일한 데이터를 두 개의 목록을 가질 수 있습니다, 하나는 분류 (그러나 당신이 원한다). –

+0

@JoachimPileborg ** 동일한 데이터 ** 및 ** 같은 크기 **는 완전히 다른 두 가지 개념입니다. – user2485710

+0

또한 코드에 어떤 문제가 있습니까? 두 번째 구조는 이전 주석에서 제안한 것과 똑같이 작동합니다. 그리고 "size"라고 말할 때, 정렬되지 않은'student_type_' 구조체와 같은 수의 항목을 가진'sort_list_' 구조체의 정렬 된리스트를 만들고 싶다고 가정합니다. –

답변

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; 
관련 문제