У меня есть следующий связанный список в C++-программе. Я думаю, что он построен правильно.С ++ связанный список аргументов типа «Node *» несовместим
struct Node
{
int data;
Node* next = NULL;
};
void addNode(Node *head, int data);
int main()
{
struct Node
{
int data;
Node* next = NULL;
};
Node *head = new Node;
head->data = 3;
addNode(head, 5);
system("pause");
return 0;
}
void addNode(Node *head, int data)
{
Node *curr = head;
while (curr->next != NULL)
{
curr = curr->next;
}
Node *newnode = new Node;
curr->next = newnode;
}
Сначала я создаю-структуру узла, а затем создать head
и установить его на new Node.
я просто установить head->data = 3
. Затем я вызываю свою функцию addNode
, которая принимает Node * head
и по существу добавляет узел в конец связанного списка. Однако, когда я прохожу в голову, в заявлении addNode(head, 5)
, я получаю сообщение об ошибке 'void addNode(Node *,int)': cannot convert argument 1 from 'main::Node *' to 'Node *'
Почему это? Это не имеет смысла для меня.
Почему вы снова определяете 'Node' внутри' main() '? Это не имеет значения, не имеет ничего общего с оригинальным. – songyuanyao
Когда я инициализирую прототип, он не знает, когда Node так, я должен снова создать структуру. –
Что значит «инициализировать прототип»? Какой прототип? Для кода, который вы показали, просто удалить определение внутри 'main()' будет хорошо. – songyuanyao