1

だから私はプレフィックスツリーを作ろうとしていますが、これが何らかの論理エラーを引き起こすかどうかはわかりませんか?

typedef struct TreeTag
{
    char letter;
    struct TreeTag *links[26]; /* Is this advisable? */
    int fullword;
    int linknum;
}TreeNode;
4

2 に答える 2

1

はい、構造体ノードへのポインタの配列は許可されています

これを行う場合:

struct node * p; //it's allowed

したがって、ポインタの配列を宣言するのに問題はありません。

同じ構造体への複数のポインタが必要な場合は、これを行います

struct node * left;
 strcut node * right;

だからなぜあなたはこれを行うことができないのですか

struct node *child[2];

同様にstruct node *p[26]可能ですが、すべては要件と実装によって異なります。

1つの要件、私が考えるようにd-ary tree(各ノードにはd個のノードがあります)そして、親ノードからその子に直接ナビゲートしたいとします。

だからstruct node *child[d]合法です(ここでdは#defined

于 2012-11-24T13:21:46.547 に答える
0

それはいいです。構造体内の構造体へのポインタを使用できます。

構造体は、メンバーを宣言した時点で宣言されていると見なされますが、定義されていません。宣言されているがまだ定義されていない型へのポインターが一般的です。たとえば、バイナリツリーまたはリンクリストでノードを定義するにはどうすればよいでしょうか。リストの場合、通常は次のようなことを行います

typedef struct ListItem {
   struct ListItem * next;
   SomeType data;
} ListItem;
于 2012-11-24T13:21:09.247 に答える