学生向けにプログラミングを解説。Studioで新規プロジェクトを作り、以下のcppファイルを作成して下さい。newl;}/*Treeに値newlがあれば1を返し、無ければ0を返す。Cドライブのtestフォルダに保存してあります。バイナツリーにデータをポインタを使って登録するような一般的なプログラムです。バイナツリーに登録に必要な値は整数とし、以下のように登録する際にはデータへのポインタとその値とを引数に与えるようにしています。便利にするため、addCell()関数は新しいセルのメモリの割り当てからツリー登録まですべて行うようにしています。バイナリーツリーにはファイルから読み込んだ学生のデータを登録するようにしています。これは成績をキー(鍵)にして登録しています。次に、登録後キーボードから入力された値がツリーにあるか否かを表示し、ツリーにある場合にはその学生のデータをすべて表示するようにしています。バイナツリー(二本木)はこれまでのデータ構造とは異なり、ソートなどにおいて最初から効率よくデータを格納するために考案されたものです。その構成要素は、双方向リンクリストと同じく、データへのポインタと、自分自身を参照する2つのポインタからなっています。違いは、双方向リンクリストが同じ直線上の左右へのポインタによってつながっているのに対して、バイナツリーでは木のように広がっていく点にあります。バイナツリーでは、左側にデータを付け加えるか、右側に付け加えるかをdataから導かれる値で判断します。学生のテストの点数で判断をするとします。最初のデータは50点だとすると、これが最初のツリーの根っこになります。次にデータを登録する際に、もし40点ならば50点より小さいので、左に登録します。次に45点ならば、50点より小さいので左に行き、そこでは40点が登録されているので、それよりは大きいので右に登録します。このように、点数が小さいものは左に、点数が大きいものは右に登録するようにします。うまくツリーが広がるように登録されれば、ポインタをたどる回数はリンクリストよりも少なくなり、素早い登録が可能になります。*root=NULL;バイナツリーにおいても、木の根っこへのポインタは保持していなければなりません。上の例では、staticに保持するようにしていますが、呼び出す側のプログラムで保持する場合もあります。*data;のように本来は持つべきです。最初は要素がないので、rootにはNULLを入れておきます。バイナツリーの要素は、例えば次のようにして生成します。bp;}こうして生成したツリーに追加するには、以下のような手順になります。1.rootがNULLならば、そこにぶら下げます。2.そうでなければ、pointを比較して、小さければ左に進み、大きければ右に進みます。3.以上を繰り返して、NULLポインタであればそこに登録します。して作成したバイナツリーは、例えば検索に利用することができます。検索手順は、与えられた値と現在のポインタの示す要素に格納されている値とを比較し、小さければ左に進み、大きければ右に進みます。同じ値があれば、そこで検索は終了し、進むべき道がなければ該当する値は存在しないことになります。Treeに値newlがあれば1を返し、なければ0を返します。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。