我在C++程序中有以下鏈接列表。我認爲它的構建正確。類型「節點*」的C++鏈接列表參數難以處理
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 *'
這是爲什麼?這對我沒有意義。
爲什麼你再次在'main()'裏面定義'Node'?這是無關緊要的,與原來無關。 – songyuanyao
當我初始化原型時,它不知道Node是什麼時候,所以我需要再次創建結構 –
你是什麼意思'初始化原型'?哪個原型?對於你顯示的代碼,只要刪除'main()'裏面的定義就沒有問題。 – songyuanyao