先頭ポインタと末尾ポインタを持ち、多くのデータがポインタでつながった単方向の線形リストの処理のうち、先頭ポインタ、末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。ここで、単方向のリストは先頭ポインタからつながっているものとし、追加するデータはポインタをたどらなくても参照できるものとする。

【問題】

先頭ポインタと末尾ポインタを持ち、多くのデータがポインタでつながった単方向の線形リストの処理のうち、先頭ポインタ、末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。ここで、単方向のリストは先頭ポインタからつながっているものとし、追加するデータはポインタをたどらなくても参照できるものとする。

ア.先頭にデータを追加する処理

イ.先頭のデータを削除する処理

ウ.末尾にデータを追加する処理

エ.末尾のデータを削除する処理

【解答】

「先頭ポインタと末尾ポインタを持つ」ので、先頭ポインタと末尾ポインタは参照1回で見ることが出来る。また、追加するデータは「ポインタをたどらなくても参照できる」から、参照0回で見ることが出来る。

あとは、各項目の参照回数を考えれば良い。

まず、項目アの「先頭にデータを追加するとき」は、①現行の先頭ポインタの値を参照し、新しい先頭ポインタと現行の先頭ポインタを入れ替えて、新しいポインタに対して現行の先頭ポインタの数値を入れれば良いから、1回となる。

次に項目イの「先頭のデータを削除する処理」は、①先頭ポインタの値を参照し、2個目の値を取得し、先頭ポインタを削除し、新しいポインタを入れて、そのポインタの値に2個目の数値を入れれば良いから、1回となる。

項目ウの「末尾にデータを追加する処理」は、末尾ポインタが存在するから、①末尾ポインタの値を参照し、その値を新しいポインタの値に変更すればよいから、1回となる。

項目エの「末尾のデータを削除する処理」は、末尾ポインタを指し示す「末尾-1ポインタ」の値を取得しなければならないが、このポインタの数値を確認するためには、先頭ポインタの値から順に2個目のポインタの値、3個目のポインタの値を参照していかなくてはならないから、n-1回の参照を必要とする。(そして、n-1回の参照の後、ポインタの数値を新しいポインタに変更する。)

よって、解答はエとなる。

この問題は、ア~ウの参照回数を厳密に考えるというよりも、エのみが圧倒的に多いことを理解できていればOKだと思います。

↓クリックしていただけると励みになります↓
にほんブログ村 株ブログ 株日記へ にほんブログ村 メンタルヘルスブログ 統合失調症へ にほんブログ村 為替ブログ 為替日記へ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする