問 題
図Ⅰに示す8 セル(要素)の環状バッファを両端キューとして扱い,データを操作する処理を行う。ここで,両端キューに対する操作を以下のとおり定める。
図Ⅰは,三つのセル(網掛け部分)にデータがある場合の各操作とその処理対象のセルを示している。このように,データの追加操作は現在データがある先頭セルの直前 又は末尾セルの直後に対して行われ,データは必ず連続したセルに保持される。
いま,図Ⅱに示す初期状態の環状バッファに対して一連の操作を行った結果,図Ⅲの状態になった。このとき行われたと考えられる操作順として最も妥当なのは次のうちではどれか。
正解 (4)
解 説
push(shift()) と unshift(pop()) を連続でやると、結局何も変わりません。従って、選択肢 1,2,3,5 は結局それぞれ
1:push(C) → unshift(pop()) → shift()
2:shift() → unshift(pop()) → push(C)
3:push(C) → shift() → unshift(pop())
5:shift() → push(C) → unshift(pop()) という操作です。
図Ⅱは、CABBA から始まっているのでそれぞれの結果は
1:CABBAC → CCABBA → CABBA
2:ABBA → AABB → AABBC
3:CABBAC → ABBAC → CABBA
5:ABBA → ABBAC → CABBA で、どれも図Ⅲの CCBBA になりません。
以上より、正解は 4 です。
ちなみに、4の操作では
CABBAC → ABBACC → BBACC → CBBAC → CCBBA となり、確かに図Ⅲの状態になります。
コメント