平成14年 秋期 基本情報技術者 午後 問02
問02 テキストエディタの実現次のプログラムの説明を読んで,設問1〜3に答えよ。 〔プログラムの説明〕 テキストエディタを実現するプログラムである。 (1) このプログラムが扱うことができるテキストは,1行は 80 文字まで,行数は MAX までである。 (2) 行の操作用に次の大域変数を定義する。 @ CP: 処理の対象となる行を指し示す変数。 (3) 行の操作用に次の副プログラムを定義する。 @ INSERT(x): 新たな行 x を,CP が指し示す行に挿入する。 挿入によって,元の行以降は1行ずつ繰り下がる。 A DELETE(): CP が指し示す行を削除する。削除によって,次の行以降は 1行ずつ繰り上がる。 B LAST(): 最後の行の行番号(テキストの行数)を返す。 テキストが空の場合は 0 を返す。 C GET(): CP が指し示す行の文字列を返す。 (4) その他,CP の操作などのために,複数の副プログラムが定義されている。 設問1 文字列型の配列 LINE[i]( i=1,2,… ,MAX )と,
整数型の変数 TAIL を用いてプログラムを作成した。
i 行目の文字列 Li は LINE[i] に格納し,
変数 TAIL には常に最後の行に対応した配列要素番号(空の場合は0)を格納する。
解答群 ア DELETE() イ GET() ウ INSERT(x) エ LAST() 設問2
図2のように,ポインタを用いた双方向リストで実現するようにプログラムを変更した。
リストの第i要素は,i−1行目を格納した要素へのポインタ,
i 行目の文字列 Li ,i+1行目を格納した要素へのポインタで構成される。
対象となる要素がない場合には,ポインタの値として 0 が格納される。
解答群 ア DELETE() イ GET() ウ INSERT(x) エ LAST() 設問3 次の記述中の に入れる正しい答えを, 解答群の中から選べ。
ポインタを用いる双方向リストを,三つの配列を用いて実現した。 図3は,最大行数が10の場合の例である。 変数 CP には処理の対象となる行を格納した配列要素番号が, 変数 HEAD には最初の行を格納した配列要素番号が, 変数 TAIL には最後の行を格納した配列要素番号が, 変数 EMPTY には空リストの先頭の配列要素番号が格納されている。 行 L1,L2,L3,L4, L5が図3の状態で格納されていて,CP=8 のとき, DELETE()を実行して行 L3を含んだ配列要素を削除すると, HEAD と TAIL の値には変更がなく,EMPTY=8,PREV[9] = ,NEXT[2] = , NEXT[8] = となる。 ここで,削除された配列要素は,空リストの先頭に追加するものとする。
図3 配列を用いた双方向リストによる実現例 解答群 ア 0 イ 1 ウ 2 エ 3 オ 7 カ 8 キ 9 ク 10
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ] |