我正在编写代码来插入元素,使用引用调用。 我无法弄清楚指针的混乱是什么。请指导我实施中的错误。
我的问题显然是概念性的,所以如果给出答案背后的解释,我会感激,而不是答案本身。
#include <iostream>
// Insert an element in a Single Linked List
using namespace std;
typedef struct Node {
int data;
Node* next;
} Node;
void Insert(int x, Node* head);
int main()
{
int n, x;
cout<<"How many elements?\n";
cin>>n;
Node* head = NULL;
for(int i=0; i<n; i++)
{
cout<<"Insert Number\n";
cin>>x;
Insert(x, &head);
}
Print(head);
return 0;
}
void Insert(int x, Node** phead) // Insert at the beginning
{
Node* temp = new Node();
temp->data = x; // (*temp).data = x
temp->next = NULL;
if (*phead != NULL) temp->next = *phead;
*phead = temp;
}
完整错误是:
error: cannot convert ‘Node**’ to ‘Node*’ for argument ‘2’ to ‘void Insert(int, Node*)’
Insert(x, &head);
答案 0 :(得分:3)
您的函数原型与定义不匹配。
void Insert(int x, Node* head);
void Insert(int x, Node** phead)
{