У меня ошибка при создании простого связанного списка.
Сообщение об ошибке не cannot convert 'listNode**' to 'listNode*' in assignment
.
Код:
struct listNode {
const char *data;
listNode *link;
};
int main(){
listNode *node = new listNode;
node->data = "Adley";
node->link = NULL;
listNode *node2 = new listNode;
node2->data = "Bert";
node2->link = NULL;
listNode *node3 = new listNode;
node3->data = "Colin";
node3->link = NULL;
node->link = &node2;
node2->link = &node3;
for(listNode *i = &node; i != NULL; i = i->link){
std::cout << i->data << std::endl;
}
return 0;
}
Я знаю, что этот вопрос легко решить, но мне жаль, что мой мозг запутался.
Изменить:
node->link = &node2;
node2->link = &node3;
Для того, чтобы:
node->link = node2;
node2->link = node3;
Удалите амперсанды (&). node2
и node3
уже являются указателями. Не нужно указывать на указатели :)
for(listNode *i = node; i != NULL; i = i->link){
std::cout << i->data << std::endl;
}
вы должны использовать *i=node
NOT *i=&node
в init-выражении for
тип i
: listNode*
тип node
: listNode*
но тип &node
: listNode**