Trie数据结构化

时间:2011-06-21 19:13:34

标签: c struct initialization

我正在制作一个特里,我需要有人告诉我这段代码有什么问题:

typedef struct node
{
 struct node *letters[26]={0};

} node;

我想这样做,以便在节点结构的每个引用中,指针都是null ... 非常感谢您的帮助:)谢谢

3 个答案:

答案 0 :(得分:3)

您无法初始化类型。您只能初始化对象

typedef struct node {
    struct node *letters[26];
} node;

node mynode = {0}; /* {{0}}  or even {{0, 0, 0, 0, ...}} */

答案 1 :(得分:2)

你不能像这样初始化结构的成员,但你可以在实例化时初始化它们,或者写一个初始化函数:

#include <string.h>

typedef struct node
{
  struct node *letters[26];
} node;

void initNode(node * n) { memset(n->letters, 0, 26 * sizeof(node *)); }

void foo()
{
  /* aggregate initialization, efficient */
  node n = { 0, 0, 0, /* 26 times */ };

  /* helper function */
  node m;
  initNode(&m);
}

(如果这是C ++ 0x,你可以在默认构造函数的基本初始化列表中初始化struct成员,甚至是数组。)

答案 2 :(得分:2)

你可以采用简单的方法。

您可以创建一个函数,该函数将使用NULL创建并初始化所有指针,然后返回node对象。

可能如下所示。

Node* GetMeANode()
    {
        //Create an object of Node structure here.
        //initialize all pointer with `NULL` 
        // Return it.
    }