C с указателем на себя

Можно ли определить структуру с указателем на этот тип структуры? Я имею в виду:

typedef struct {
    char* name;
    node* parent;
} node;

Насколько я пробовал или читал, я не знаю, как это сделать или если это возможно.

Ответ 1

Да, но вы должны назвать структуру, чтобы вы могли ссылаться на нее.

typedef struct node_ {
    char* name;
    struct node_ * parent;
} node;

Имя node объявляется только после того, как структура полностью определена.

Ответ 2

Вы можете использовать incomplete type в typedef:

typedef struct node node;

struct node {
  char *name;
  node *parent;
};

Ответ 3

Я согласен... и деревья. Вам не нужно смотреть на него как на "яйцо и chiken", потому что определение типа всегда происходит до его создания. Таким образом, наличие переменной-члена одного и того же типа объекта просто сложно, когда вы начинаете смешивать два в вашей голове!

Ответ 4

Да, это возможно.

Вот как делаются связанные списки!

Ответ 5

Почему бы вам не попробовать? Вы должны поместить имя в структуру, и да, это способ работы рекурсивных структур данных.