13/01/01 00:12:39.43
>>572
やりたいことは理解したつもりです。結論からいうと、>>484 のまずいところは以下の2点
1) malloc() して得た領域が 0 クリアされていることを仮定している。
> Tree tree = malloc(sizeof(struct Tree));
の直後に
> Tree_add(tree, 3);
をおいてしまっている。たぶん、c++/java のコンストラクタにあたるものを C にするときに書き落としてしまっているかと。
2) malloc() の帰り値はチェックしたほうがいいんじゃないかな?
>typedef struct Hoge *Hoge
名前空間が違うからねえ可能といえば可能だけれども。もう C++/java 的な考え方に染まっておられるんですね。
確かに非再帰に書けばスタックオーバーフローの恐怖からは逃れられるけれども、この問題の場合も私ならば再帰的に書いてしまう。
URLリンク(ideone.com)
木構造は再帰的ゆえに木構造を扱うアルゴリズムも再帰的に書いて楽をしたくなってしまいます。
スタックオーバーフローは別の手段で回避しようかと、リンク時にスタックサイズを指定したり、ああ、最近 AVL 木を添削してもらったのでぼちぼち使い始めています。
あけおめ!