невозможно преобразовать listNode ** в listNode * в назначении

0

У меня ошибка при создании простого связанного списка.
Сообщение об ошибке не 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;
}

Я знаю, что этот вопрос легко решить, но мне жаль, что мой мозг запутался.

Теги:
linked-list

2 ответа

1
Лучший ответ

Изменить:

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

Для того, чтобы:

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

Удалите амперсанды (&). node2 и node3 уже являются указателями. Не нужно указывать на указатели :)

0
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**

  • 0
    Спасибо за подсказку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню