整数が一つずつ入ってくるとき、「最近アクセスした互いに異なる値 K 個」を 最新順で保持するデータ構造 MRU を作ります。(K = MRU_K = 5) 値にアクセスすると その値が先頭(index 0)に来ます。 mru_access を完成させ、tests.c に境界ケースを追加してください。 (mru_init・mru_dump は提供されています。) Note: mru_access(m, x) — 値 x にアクセス。mru_dump(m, out) — 最新順で out に詰めて個数を返す。LRU キャッシュのいとこにあたる MRU(Most Recently Used) リストです。
純粋な C(C11)で最近使った項目(MRU)データ構造のアクセス処理を完成させる問題です。整数が一つずつ入ってくるとき、最近アクセスした互いに異なる値 K 個(K=5)を最新順で保持し、値にアクセスすると先頭に来るようにします。個数の上限がある最新順リストを検証する力を練習します。
個数の上限が決まった最新順リスト(MRU)は、キャッシュなどでよく使われる構造です。肝心なのは、同じ値に再びアクセスしたときの扱い、異なる値が上限まで埋まってあふれるときの扱い、そして最新順が保たれるかです。普通の入力では見えない部分が多いので、上限を超える入力や同じ値の再アクセスのような境界ケースまで確認する習慣が大切です。この問題は、個数の上限がある最新順リストを保つ領域を扱います。