応用情報技術者試験 令和4年春 午前問5 解説付き過去問
問題
リストには、配列で実現する場合とポインタで実現する場合とがある。
リストを配列で実現した場合の特徴として、適切なものはどれか。
ここで、配列を用いたリストは配列に要素を連続して格納することによってリストを構成し、ポインタを用いたリストは要素と次の要素へのポインタを用いることによってリストを構成するものとする。
正解
解説
この問題は、リストを配列で実現する場合の特徴に関して理解を深めることを目的としています。配列とポインタを用いたリストの実装方法とその特性の違いを正確に理解することが求められます。
- 配列によるリストの基本概念
配列を用いてリストを実装する際、あらかじめ最大の要素数に対応するメモリ領域を確保する必要があります。これは、配列のサイズが固定であるためで、リストの初期化時に最大要素数を定義し、その数だけメモリを割り当てます。この方法の利点は、インデックスを使用して任意の要素に直接アクセスできるため、要素の参照や更新が高速に行える点です。ただし、デメリットとしては、実際には使用されていないメモリ領域も確保してしまうため、使用効率が低下する可能性があります。 - ポインタによるリストの特性との比較
一方、ポインタを用いたリスト(通常は連結リストと呼ばれます)では、各要素が次の要素へのポインタを持つことでリストが構成されます。この方法では、要素が追加されるたびに必要なメモリを動的に割り当てるため、未使用のメモリ領域が発生しにくいです。しかし、ある要素にアクセスするためには、先頭から順にリンクをたどる必要があるため、特定の要素へのアクセス時間が長くなることが欠点です。
したがって、配列を用いたリストの特徴として「リストにある実際の要素数にかかわらず、リストに入れられる要素の最大個数に対応した領域を確保し、実際には使用されない領域が発生する可能性がある」という選択肢が正解です。この特性は配列の固定サイズに由来するもので、ポインタを用いたリストには当てはまらないため、配列を用いる際の重要な考慮点となります。