Можно указать на узел в другом узле:C++ Связанный список: Узел внутри другого узла
struct Node{
Node my_Node;
Node *next;
};
int main(){
Node *practice = new Node;
practice -> next = &(practice -> my_Node);
return 0;
}
Можно указать на узел в другом узле:C++ Связанный список: Узел внутри другого узла
struct Node{
Node my_Node;
Node *next;
};
int main(){
Node *practice = new Node;
practice -> next = &(practice -> my_Node);
return 0;
}
struct Node{
Node my_Node; // this is not allowed
Node *next;
};
Поскольку создание переменной неполного типа не допускается в С или С ++. Потому что в этот момент компилятор не знает, что такое тип Node
и сколько места требуется?
Вы не можете объявить Node
в Node
, первый это неполный тип в этой точке и второй потребовалось бы бесконечное пространство, чтобы допустить, что (поскольку узел должен содержать узел, который должен содержать узел и т.д. ..) который невозможно. С другой стороны, у вас есть Node *
в пределах Node
.
Если я использую typedef на узле, могу ли я как-то обойти это? – user3007077
@ user3007077: Как вы можете думать, что typedef позволит вам создать бесконечный стек вложенных узлов? – Beta
@ user3007077, который вам не поможет, так как Бета сказал, что у вас не может быть бесконечного гнездования, и, как Бенджамин спрашивает, какая проблема вы пытаетесь решить, что указатель на узел не поможет? –
Этот код является неправильным. Вы не можете объявить узел (i.e, my_Node) внутри себя – David
Могу ли я использовать typedef, чтобы этого избежать? – user3007077
Думаю, нет. В структуре/классе вы можете только объявить указатель на сам struct/class. – David