2013-11-19 2 views
0

Можно указать на узел в другом узле:C++ Связанный список: Узел внутри другого узла

struct Node{ 
    Node my_Node; 
    Node *next; 
}; 

int main(){ 
    Node *practice = new Node; 
    practice -> next = &(practice -> my_Node); 

    return 0; 
} 
+1

Этот код является неправильным. Вы не можете объявить узел (i.e, my_Node) внутри себя – David

+0

Могу ли я использовать typedef, чтобы этого избежать? – user3007077

+0

Думаю, нет. В структуре/классе вы можете только объявить указатель на сам struct/class. – David

ответ

1
struct Node{ 
    Node my_Node; // this is not allowed 
    Node *next; 
}; 

Поскольку создание переменной неполного типа не допускается в С или С ++. Потому что в этот момент компилятор не знает, что такое тип Node и сколько места требуется?

1

Вы не можете объявить Node в Node, первый это неполный тип в этой точке и второй потребовалось бы бесконечное пространство, чтобы допустить, что (поскольку узел должен содержать узел, который должен содержать узел и т.д. ..) который невозможно. С другой стороны, у вас есть Node * в пределах Node.

+0

Если я использую typedef на узле, могу ли я как-то обойти это? – user3007077

+0

@ user3007077: Как вы можете думать, что typedef позволит вам создать бесконечный стек вложенных узлов? – Beta

+0

@ user3007077, который вам не поможет, так как Бета сказал, что у вас не может быть бесконечного гнездования, и, как Бенджамин спрашивает, какая проблема вы пытаетесь решить, что указатель на узел не поможет? –

Смежные вопросы