同じリスト構造を用いたスタックしかし、この中にSTACK_SIZE以上のデータは貯えられない。同じ処理をリストを使って記述すれば、ヒープメモリを使い切るまで使うことができるだろう。;}キュー(QUEUE)2つの処理の間でデータを受け渡す際に、その間に入って一時的にデータを蓄えるためには、待ち行列(キュー)がよく利用される。リングバッファ配列にデータを入れる場所(wp)と取り出す場所のポインタ(rp)を使って蓄えれば良いが、配列サイズを超えることができないので、データを取り出したあとの場所を循環して用いるリングバッファは以下のようなコードで示される。循環して追いついてしまう。リスト構造を用いたQUEUEそこで、このプログラムもリストを使って記述すると以下のようになる。ポインタが正しい位置になっていないため、おかしな状態になってしまう。2重管理を防ぐために、リストの先頭と末尾を1つのセルで管理する循環リストが使われることが多い。配列を用いたスタック・待ち行列は、どのような処理か?図などを用いて説明せよ。リスト構造を用いたスタック・待ち行列について、図などを用いて説明せよ。スタックや待ち行列を、配列でなくリスト構造を用いることで、どういう利点があるか?欠点があるか説明せよ。次にメモリの利用効率の話について解説する。配列宣言でサイズは定数C言語では、配列宣言を行う時は、配列サイズに変数を使うことはできない。最近のC(C99)では、実は下記のようなものは、裏で後述のalloca()を使って動いたりする。配列サイズには、定数式しか使えないので、1クラスの名前のデータを覚えるなら、以下のような宣言が一般的であろう。;しかしながら、クラスに寿限無とか銀魂の「ビチグソ丸」のような名前の人がいたら、20文字では足りない。10000人分を用意する必要がある。配列を準備したのに、与えられたデータ量が100件で終わってしまうなら、その際のメモリの利用効率は極めて低い。途中に寿限無がいたとしても、問題はない。無駄なメモリ空間も必要最低限とすることができる。参考:寿限無(文字数:全角103文字)さる御方、ビチクソ丸(文字数:全角210文字)引用Wikipediaピカソの本名もなかなか(109文字)。ポインタを後ろに移動していく。スタックこの貸し出す度に、末尾の場所をずらす方式にスタックがある。このデータ管理方法は、最後に呼び出した関数が最初に終了することから、関数の戻り番地の保存や、最後に確保した局所変数が最初に不要となることから、局所変数の管理に利用されている。