見出し画像

これで完璧!基本情報技術者試験・双方向リストの頻出問題10問に挑戦!


1. 基本情報技術者試験の科目Bの試験範囲について

基本情報技術者試験の概要

基本情報技術者試験(FE)は、ITエンジニアとして必要な知識やスキルを評価する国家試験です。試験は「科目A」と「科目B」に分かれており、特に科目Bではプログラミングやアルゴリズムに関する問題が出題されます。これらの問題では、データ構造の理解が不可欠であり、双方向リストも重要なテーマの一つです。

科目Bにおける双方向リストの出題傾向

科目Bでは、リストや配列といったデータ構造を活用した問題が頻繁に出題されます。特に、双方向リスト(Doubly Linked List)は、データの前後移動や挿入・削除が容易であるため、実用的なデータ構造として試験でよく取り上げられます。主に以下のような問題が出題されます:

  • ノードの挿入・削除(先頭、末尾、指定位置への追加や削除)

  • 双方向移動の実装(前のノード・次のノードへの移動)

  • リストの探索(特定の値を持つノードの検索)

  • リストの長さの計算(ノードの数をカウントする)

  • リストの反転や並び替え(データの順序変更)

双方向リストは、単方向リストと比較して前後のノードを自由に移動できるという利点があります。そのため、双方向リストを正しく扱うことが、試験対策としても重要です。


2. 双方向リストとは

双方向リストの基本概念

双方向リスト(Doubly Linked List)は、各ノードが前後のノードを参照するポインタを持つリスト構造です。単方向リストとは異なり、双方向リストでは次のノード(next)と前のノード(prev)の両方を追跡できます。

基本的なノードの構造

[prev | データ | next]

双方向リストの構造

例えば、以下のような双方向リストを考えます。

NULL ← [10 | * | *] ↔ [20 | * | *] ↔ [30 | * | *] → NULL
  • **最初のノード(10)**の prev は NULL を指し、next は次のノード(20)を指す。

  • **中間のノード(20)**は prev で10を、next で30を指す。

  • **最後のノード(30)**の next は NULL を指す。

双方向リストの特徴

  • 前後の移動が可能(next と prev を使って双方向にデータをたどれる)

  • ノードの挿入・削除が柔軟(リストの途中にデータを追加・削除する際に便利)

  • メモリ使用量が多い(prev と next の2つのポインタを持つため)

このように、双方向リストはデータの順序を自由に操作できるため、さまざまな場面で利用されます。


3. 双方向リストのオリジナル問題

ここでは、基本情報技術者試験の科目Bで頻出する双方向リストに関する問題10問を紹介します。これらの問題に取り組むことで、双方向リストの基本操作やアルゴリズムを習得できます。

==================================================

【問題1】 双方向リストの先頭にノードを追加する問題

次の擬似コードは、**双方向リスト(Doubly Linked List)**の先頭に新しいノードを追加するアルゴリズムです。このアルゴリズムを実行した場合、リストの新しい先頭のノードの値として正しいものを選びなさい。

▼擬似コード▼

class Node
    value  // ノードの値
    next   // 次のノードへのポインタ
    prev   // 前のノードへのポインタ

function insertAtHead(head, newValue)
    newNode ← new Node
    newNode.value ← newValue
    newNode.next ← head
    newNode.prev ← NULL

    if head ≠ NULL then
        head.prev ← newNode

    return newNode

▼実行▼

headnew Node(10)
head.nextnew Node(20)
head.next.prevhead
head.next.nextnew Node(30)
head.next.next.prevhead.next

headinsertAtHead(head, 5)

▼選択肢▼
ア) 30、イ) 10、ウ) 20、エ) 5、オ) 40、カ) 15、キ) 25、ク) 35

======================= 解説 =======================

ここから先は

17,229字 / 10画像

¥ 300

この記事が気に入ったらチップで応援してみませんか?