Trie структурирование данных - PullRequest
0 голосов
/ 21 июня 2011

Я делаю три и мне нужен кто-то, чтобы сказать мне, что не так с этим кодом:

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

} node;

Я хочу сделать так, чтобы в каждой ссылке на структуру узла указатели были всеnull ... Ваша помощь будет принята с благодарностью :) Спасибо

Ответы [ 3 ]

3 голосов
/ 21 июня 2011

Вы не можете инициализировать тип.Вы можете только инициализировать объекты

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

node mynode = {0}; /* {{0}}  or even {{0, 0, 0, 0, ...}} */
2 голосов
/ 21 июня 2011

Вы могли бы пойти с простым подходом.

Вы можете создать функцию, которая будет создавать и инициализировать все указатели с помощью NULL, а затем возвращать node объект.

Может быть как показано ниже.

Node* GetMeANode()
    {
        //Create an object of Node structure here.
        //initialize all pointer with `NULL` 
        // Return it.
    }
2 голосов
/ 21 июня 2011

Вы не можете инициализировать элементы таких структур, но вы можете инициализировать их во время создания экземпляра или написать функцию инициализации:

#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, вы могли бы инициализировать элементы структуры в базовом списке инициализатора конструктора по умолчанию, даже в массивах.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...