HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0123
tsuka木構造を実装したい。5解決


tsuka

リンク

2010/1/23(Sat) 17:12:13|NO.30117

木構造を実装したいと考えているのですが、中々良い方法が思いつきません。
普通、どのように実装するのでしょうか。



この記事に返信する


f(炬燵中)

リンク

2010/1/23(Sat) 18:16:52|NO.30121

HSPではしこたま面倒そうであるし

分かるなら、cで書いてdll化するのが手っ取り早いだろうな。

多分。



noon

リンク

2010/1/23(Sat) 19:27:56|NO.30122

モジュール変数をつかって子ノードの位置を記憶するメンバ変数を持たせるとか、配列を木構造に見立てるとかやり方は色々あると思います。
子が2つの木構造と仮定してモジュール変数ならこんな感じのモジュールを作れば良いと思う。

#module node data,child1,child2 //dataはメインのデータ。child1とchild2は子ノードの添字 #defcfunc getdata return data #deffunc setdata str p1 data=p1 return #defcfunc getchild1 return child1 #defcfunc getchild2 return child2 #deffunc setchild int p1,int p2 child1=p1 child2=p2 return #global
配列を直接、木構造として扱うなら以下の図のように、左の子の添字は親ノードの添字*2+1となります。

0 / \ 1 2 / \ /\ 3 4 5 6 /\ /\ /\ /\ 7 8 9 10 11 12 13 14



tsuka

リンク

2010/1/23(Sat) 19:43:05|NO.30123

>fさん
そうですね。。。
Cなら配列で簡単に作れそうですね。
HSPのためにも、これは最終手段にとっておくことにします。

>noonさん
それが・・・実は、子ノードの数が固定じゃないんです。



noon

リンク

2010/1/23(Sat) 20:12:09|NO.30124

それなら子ノードの位置を配列に記憶するようにすれば良いかと。
あくまでも参考程度のものなので実装するときはもっと工夫が必要ですが。


#module node data,child //dataはメインのデータ。childは子ノードの添字を格納する配列。 #modcfunc getdata return data #modfunc setdata str p1 data=p1 return #modcfunc getchild int p1 //p1番目の子ノードの添字を取得する return child(p1) #modfunc setchild int p1,int p2 //p1番目の子ノードに添字p2をセット child(p1)=p2 return #global



tsuka

リンク

2010/1/24(Sun) 22:50:45|NO.30144

>noonさん
なるほど。

みなさんありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.