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

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

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

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

5 ответов

Решение

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

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

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

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

typedef struct node node;

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

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

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

Вот как связаны списки!

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

Другие вопросы по тегам