创建简单的链接列表时出错
错误消息为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;
}
我知道这个问题很容易解决,但我很抱歉我的大脑现在很困惑。
答案 0 :(得分:1)
更改:强>
node->link = &node2;
node2->link = &node3;
要强>
node->link = node2;
node2->link = node3;
删除&符号(&amp;)。 node2
和node3
已经是指针。无需指向指针:)
答案 1 :(得分:0)
for(listNode *i = node; i != NULL; i = i->link){
std::cout << i->data << std::endl;
}
您必须在*i=node
的init-expression中使用*i=&node
NOT for
i
的类型:listNode*
node
的类型:listNode*
但是&node
的类型:listNode**