この作業は無向グラフでも有向グラフでも同様に実施することができます。これらの情報をそのまま格納します。本記事ではグラフを以下のように表すことにします。隣接頂点たちを可変長配列に格納したものを表します。上図の有向グラフの例の場合、以下のようになります。{0}また、本記事ではグラフを表すデータの入力は以下のように与えられることを想定します。つないでいることを表します。つなぐ辺があることを表すものとします。$b_{M-1}$この形式のデータを受け取ってグラフを作る部分は例えば以下のように実装できるでしょう。本記事では扱いませんが、グラフの辺に重みがあるケースもあります。鉄道路線図上で二駅間の最短経路を求める問題では、駅間の移動時間についての情報が必要になります。そのような場合には、一例として以下のように辺を表す構造体を作ってあげる実装方法が考えられます。Libraryもよく知られています。本記事では、アルゴリズムを学びながら実際に実装して慣れるという観点からこれを用いず、自前実装を行います。本記事では深さ優先探索の方をメインに扱いますが、最初にグラフ探索の一般的な考え方について紹介します。辺をたどって到達することのできる頂点をすべて探索する方法について、一般的なフレームワークを検討します。グラフ探索は、ネットサーフィンするときのことを思い浮かべるとわかりやすいかもしれません。ページのリンク関係を表すものだと考えてみましょう。対応するページを一通り読みます。(下図のように読了済のノードは赤く示しています)。対応するページを読んでおく前者はとにかく辿れるリンクを猪突猛進に突き進む方針です。後者は「一旦保留にしていたページ」を一通り全部読み終わってから、より深いリンクへと足を踏み入れていく方針です。前者が深さ優先探索、後者が幅優先探索に対応します。以上の話を、具体的なアルゴリズムに起こしてみましょう。(保留中の頂点の集合)このときグラフ探索は、深さ優先であっても幅優先であっても、一般的に下のような疑似コードで記述することができます。選ぶかによって生じます。して詳細に追ってみます。