指针解除引用:无法将“节点**”转换为“节点*”

时间:2018-01-24 23:40:13

标签: c++ pointers linked-list

我正在编写代码来插入元素,使用引用调用。 我无法弄清楚指针的混乱是什么。请指导我实施中的错误。

我的问题显然是概念性的,所以如果给出答案背后的解释,我会感激,而不是答案本身。

#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);

1 个答案:

答案 0 :(得分:3)

您的函数原型与定义不匹配。

void Insert(int x, Node* head);
void Insert(int x, Node** phead)
{