プログラムすると、次のようになります。対応させるところがポイントです。内容は上図の隣接行列と同じです。列の行列が必要になることです。なってしまい、メモリを浪費してしまうのです。この欠点を補う方法に隣接リストがあります。これはつながっている頂点をリストに格納する方法です。プログラムすると次のようになります。この場合、ベクタの要素がリストになることに注意してください。ところで、隣接リストにも欠点があります。接続しているか調べるには、データを順番に調べていくしか方法がありません。このため、接続の判定に時間がかかることがあるのです。頂点に接続されている辺の数が少なければ、処理速度が極端に遅くなることはないでしょう。グラフをプログラムするのであれば、わざわざ頂点を数値に変換する必要はありません。頂点はシンボルで表せばいいのです。頂点と隣接リストの対応は連想リストを使うと簡単です。次のリストを見てください。E)))グラフを連想リストで表現する場合、キーが頂点を表すシンボルでデータが隣接リストになります。頂点の隣接リストを求めることになります。次の例を見てください。隣接リストを取り出しています。経路を求めることにします。経路の表し方ですが、これはシンボルを並べたリストで表せばいいでしょう。地点までの経路は次のようになります。経路の管理方法ただし、そのまま並べただけでは探索中の処理が面倒になります。追加しなければならないからです。使って簡単にできますが、それ以外の場所にデータを追加するのはちょっと面倒です。そこで、経路を逆順に管理することにします。説明したように、「進む」ことを再帰呼び出しに対応させるのがポイントです。引数としてゴール地点と経路を受け取ることにします。最初は次のように呼び出します。表わしていることに注意してください。