単連結リストの整列 #98 二教科の成績へのインタフェイス

安定な整列の有用性の例として基数ソートを挙げたが、
そんな狭い問題領域の話ではね、ということもあるだろう。
ということで、唐突に、学生の二つの教科の成績が一塊のレコードであるようなデータの整列の話。

school_record.h
typedef struct tag_school_record school_record_t;

typedef enum {
    GRADE_A=9, GRADE_B=5, GRADE_C=1
} grade_t;

school_record_t *school_record_new(const char *name, grade_t maths, grade_t physics);
void school_record_dispose(school_record_t *rec);
const char *school_record_get_name(school_record_t *rec);
grade_t school_record_get_maths(school_record_t *rec);
grade_t school_record_get_physics(school_record_t *rec);

ひとりの学生の算数と理科の成績と名前を情報とするレコードの生成、後片付け、
そして各情報へのアクセッサのインタフェイスの定義。