新らしくなった基本情報 科目 B アルゴリズムとプログラミング サンプル問題3をJavaにしてみました
2023 年 4 月からIPA (独立行政法人情報処理推進機構)の基本情報技術者試験の制度が変更されました。
ここでは、「基本情報技術者試験 科目 B のサンプル問題」の中から、アルゴリズムとプログラミングの問題を取り上げ、Javaのソースコードを示します。
新人エンジニア研修に参加されている皆様の参考になれば幸いです。
問 3
次のプログラム中のaとbに入れる正しい答えの組合せを,解答群の中から選べ。
手続 append は,引数で与えられた文字を単方向リストに追加する手続である。単方向リストの各要素は,クラス ListElement を用いて表現する。クラス ListElement の説明を図に示す。ListElement 型の変数はクラス ListElement のインスタンスの参照を格納するものとする。大域変数 listHead は,単方向リストの先頭の要素の参照を格納する。リストが空のときは,listHead は未定義である。
メンバ変数 | 型 | 説明 |
---|---|---|
val | 文字型 | リストに格納する文字。 |
next | ListElement | リストの次の文字を保持するインスタンスの参照。初期状態は未定義である。 |
コンストラクタ | 説明 |
---|---|
ListElement(文字型: qVal) | 引数 qVal でメンバ変数 val を初期化する。 |
図 クラス ListElement の説明
【プログラム】
大域: ListElement: listHead ← 未定義の値
○append(文字型: qVal)
ListElement: prev, curr
curr ← ListElement(qVal)
if (listHead が a)
listHead ← curr
else
prev ← listHead
while (prev.next が 未定義でない)
prev ← prev.next
endwhile
prev.next ← b
endif
【解答群】
a | b | |
ア | 未定義 | curr |
---|---|---|
イ | 未定義 | curr.next |
ウ | 未定義 | listHead |
エ | 未定義でない | curr |
オ | 未定義でない | curr.next |
カ | 未定義でない | listHead |
【Javaプログラム】
【結果】
LinkedList: s a y c o n |
【プログラムの解説】
このプログラムは、単方向連結リストを実装し、新しい要素をリストの末尾に追加するメソッド append
を定義しています。
ListElement
クラスは、リストの要素を表すためのクラスで、char
型の val
フィールドと、次の要素を指す next
フィールドを持ちます。
LinkedList
クラスは、リストの先頭要素を表す listHead
フィールドを持ち、append
メソッドが定義されています。append
メソッドは、新しい要素をリストの末尾に追加するためのメソッドです。リストが空の場合は、新しい要素をリストの先頭に設定します。リストに既に要素がある場合は、リストの末尾に新しい要素を追加します。
printList
メソッドは、リストの中身を表示するためのメソッドです。listHead
フィールドからリストの先頭要素を取得し、次の要素が null
になるまで、各要素の val
フィールドの値を表示します。
テストクラス Q3
では、LinkedList
クラスのインスタンスを作成し、append
メソッドで要素を追加しています。最後に、printList
メソッドを呼び出して、リストの内容を表示しています。
IT企業向け新人研修おすすめ資料 無料公開中 (saycon.co.jp)
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新入社員2024年11月23日「ゲシュタルト崩壊」とシステム開発
- 新入社員2024年11月23日データベースでテーブル名やフィールド名にスペースを使うことは、一般的には推奨されていません
- 新入社員2024年11月23日「データにはなぜ型が必要なのか?」を2進数の観点から解説
- 新入社員2024年11月23日ディスプレイの解像度の意味と変更方法