一般に環状リストは最初のデータという概念はありません。例えばリングバッファーという
バッファーに使用します。リングバッファーは主に最新のデータいくつかを保存するという
目的で使われます。
上の例は要素数4個の環状リストです。A1〜A2の「次のデータ」は常に次のデータの
ポインタを指していて、データを代入してもそのポインタは変わりません。
「最新のポインタ」がA1を指しているので、さらに新しいデータを代入したい場合は、
A2に入れ、「最新のポインタ」をA2に更新します。さらにA3,A4にデータを代入し、
次のデータを代入したい場合は元に戻って、A1に代入します。これを繰り返すことによって、
最新のデータ4つが常にリストにはいることになります。
データを取り出したい場合は、「最新のポインタ」からデータを取り出せば、
最新のデータがいつでも取り出せることになります。
なぜこんな面倒なことをするかというと、マルチスレッドになったときに必要に
なります。マルチスレッドプログラムでは、データを代入している最中にも最新データを
取得する場合があります。しかしデータを代入中にそのデータを取得すると矛盾が生じる
ことがあります。もしリングバッファーがないと、代入中はデータの取得を待たなければ
なりません。このデータが大きい場合や、データの取得は最優先に行わなければ
ならない場合は不都合です。そこでリングバッファーを用意して、データの代入中は
その前のデータを取得するという方法をとるわけです。
では次のページでは、環状リストの例を紹介します。