単連結リストの整列 #102 二教科の成績をその値とするようなリストの要素
表題の通りである。
二つの教科の成績を保持するschool_record_t型のデータを値として持つリストの要素を考える。
とりあえずリスト要素の定義のみの未完成のコード(コンパイルはできる)。
school_record_list.h
#ifndef SCHOOL_RECORD_LIST_H_INCLUDED #define SCHOOL_RECORD_LIST_H_INCLUDED #include "school_record.h" #endif /* SCHOOL_RECORD_LIST_H_INCLUDED */
school_record_list.c
#include "school_record_list.h" typedef struct tag_school_record_node school_record_node_t; struct tag_school_record_node { school_record_t *rec; school_record_node_t *next; school_record_node_t *prev; };
要素の詳細は利用者にあらわにする必要は今のところないので、
インタフェイス側には要素の型school_record_node_tを出す必要はない。
要素自体にはschool_record_t型へのポインタだけ持たせデータの実体は保持しない。
まあ、school_record_t型は不完全型なのでこの型を直接含めることは元々無理なのだが。
ここではリストを双方向連結リストとして実装するようにしてみよう。
そのため各要素はその前後の要素へのポインタを持たせる。
もちろんリストのインタフェイスは単連結リストとして公開する。