0

リンクされたリストの配列を作成し、各頂点を配列のインデックスで表すことを理解しています。しかし、各頂点に関連付けられた実際のデータをどのように保存すればよいのでしょうか? たとえば、頂点が 1. John 2. Mary 3. Sunny で、辺が (John,Mary) と (Mary,Sunny) の有向グラフがある場合、通常の方法で隣接リストを作成できます ( 1,2) と (2,3) をエッジとして使用します。しかし、1、2、3 に関連付けられた名前はどこに保存すればよいのでしょうか?

私は何をしましたか?

名前とクラス「edgenode」のオブジェクトへのポインターを格納するクラス「頂点ノード」を作成しました。次に、クラス「頂点ノード」のオブジェクトを含む配列を作成しました。「edgenode」クラスには、1) この配列のインデックス (インデックスはエッジの 2 番目のエンドポイントを表す)、および 2) 「edgenode」の次のオブジェクトへのポインターが含まれます。次に、頂点 (名前) とエッジ (名前のペア) をグラフに追加しました。プログラムは正しく実行されます。

これが有効なアプローチなのか、名前を個別に配列に格納する方が良いのか、それとも他の方法があるのか​​ を知りたいですか?基本的に、私はそれが従来どのように行われているか知りたいですか?

PS: STL や Boost、または同様のものを回答に使用することは避けてください。前もって感謝します。

4

1 に答える 1

1

この場合、クラスが多すぎると思います。これが最善のアプローチであるかどうかはわかりませんが、1 つのクラスを使用します。

Vertex
{
   string name;
   List<Vertex> adjacent;
}

そうすれば、どの頂点がどの頂点にリンクされているかを知ることができ、すべてを格納するクラスが 1 つだけになります。

しかし、最良のアプローチはあなたのニーズに合ったものであり、それはあなたのグラフで何をするかによって異なります.

于 2013-01-28T08:05:11.787 に答える