• 締切済み

C言語 自己参照型 複数木構造

C言語の自己参照型を使用しプログラムを作ろうとしていますが、 2分探索木についての解説、サンプルをのせているサイトは たくさんあり勉強になったのですが、 木が2以上の複数の場合になった場合、どういったプログラムをくめば いいのかわからず、学習したいと思っています。 参考となる、サイト、サンプルを教えていただけないでしょうか? //2分木の場合 struct node{ int nodeID; struct node *nextA; struct node *nextB; } //複数木の場合? struct node{ int nodeID; struct node **next; } のように複数木の場合は、次の木が複数に対応できるように ポインタのポインタを使用するのかと思いますが、 構造体のメンバでポインタのポインタの使用の仕方が いまいち理解できませんでした。 よろしくお願い致します。

みんなの回答

  • mide
  • ベストアンサー率44% (333/745)
回答No.3

「複数木の場合」のように分岐先をnextで持ってもいいのですが,考え方を変えて多分木を2分木で表現することもでき,この方法だとセルの数は多くなりますがリスト操作やデータの取り扱いがシンプルになることが多いです。 Lispという言語をご存知ですか?これは基本的なデータ構造がリストなのですが,見かけ上多分木であっても全て2分木としてデータに格納されます。データの参照・加工はcar, cdr, cons, eq, atom という少数の関数ででき,これを基にして必要な関数を定義します。

すると、全ての回答が全文表示されます。
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

http://okwave.jp/qa/q7895757.html 以前に同じような質問されて解決になってるんですけど理解できてませんでしたか?

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

next = (struct node **) malloc(sizeof(struct node *) * 分岐数); for (i = 0; i < 分岐数; i++) { next[i] = (struct node *) malloc(sizeof(struct node)); } malloc()で領域確保ができなった場合の処理は、適切に付け加えてください。

すると、全ての回答が全文表示されます。

関連するQ&A