私はC++プログラムで以下のリンクリストを持っています。私はそれが適切に構築されたと思います。C++リンクリスト引数 "Node *" incompitable
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
を作成し、私もちょうどhead->data = 3
を設定new Node.
に設定します。次に私はNode * head
を取り込み、本質的にノードをリンクリストの最後に追加する私のaddNode
関数を呼び出します。しかし、私が頭の中を通ると、addNode(head, 5)
の文章で、私はエラーが出る'void addNode(Node *,int)': cannot convert argument 1 from 'main::Node *' to 'Node *'
これはなぜですか?それは私には意味がありません。
'main()'の中に 'Node'をもう一度定義するのはなぜですか?これは無関係で、元のものとは関係ありません。 – songyuanyao
プロトタイプを初期化すると、ノードがあるので構造体を再度作成する必要があることがわかりません –
'プロトタイプを初期化する 'とはどういう意味ですか?どのプロトタイプ?あなたが示したコードでは、 'main()'の中の定義を削除するだけで問題ありません。 – songyuanyao