是否可以创建一个指向struct(node)的指针数组?

时间:2012-11-24 13:19:26

标签: c arrays pointers tree treenode

所以我正在尝试创建一个前缀树,但我不确定这是否会导致某种逻辑错误?

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

2 个答案:

答案 0 :(得分:1)

是的,允许使用struct node的指针数组

如果你这样做:

struct node * p; //it's allowed

所以声明指针数组没有问题。

当您需要多个指向同一结构的指针时,您可以执行此操作

struct node * left;
 strcut node * right;

所以为什么你不能这样做

struct node *child[2];

同样struct node *p[26]也是可能的,但一切都取决于您的要求和实施。

一个要求,正如我想到的那样d-ary tree(每个节点都有d个节点) 并且您希望直接从父节点直接访问它的子节点。

所以struct node *child[d]是合法的(其中d是#defined

答案 1 :(得分:0)

没关系。您可以使用指向结构内部结构的指针。

在声明成员时,结构被认为是声明的,但未定义,并且指向已声明但尚未定义的类型的指针很常见。例如,您如何能够在二叉树或链表中定义节点?对于列表,您通常会执行类似

的操作
typedef struct ListItem {
   struct ListItem * next;
   SomeType data;
} ListItem;