无法在赋值时将'listNode **'转换为'listNode *'

时间:2014-09-14 16:23:32

标签: c++ linked-list

创建简单的链接列表时出错 错误消息为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;
}

我知道这个问题很容易解决,但我很抱歉我的大脑现在很困惑。

2 个答案:

答案 0 :(得分:1)

更改:

node->link = &node2;
node2->link = &node3;

node->link = node2;
node2->link = node3;

删除&符号(&amp;)。 node2node3已经是指针。无需指向指针:)

答案 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**