我在链表中​​使用pass by reference时遇到了麻烦

时间:2017-05-27 09:35:42

标签: c++ linked-list pass-by-reference

我的代码是这样的。 它显示无法将节点转换为节点*。 请告诉我如何使用传递参考来实现它。

    #include <iostream>
    using namespace std;

    struct node
    {
      int data;
      node* next;
     };

node* insertfront(node &root, int v)
{
node* temp = NULL;
temp->data = v;
temp->next = root;
return temp;
}


int main()
{
node* root;
root = insertfront(root,5);
return 0;
}

1 个答案:

答案 0 :(得分:1)

您正在传递一个指向该函数的指针,您应该像那样传递它

root = insertfront(*root,5);

如果要引用节点,或更改功能

node* insertfront(node *&root, int v) 

如果要引用指向节点的指针。 你也应该改变这个node* temp = NULL;,你应该在堆上使用内存分配,我的意思是使用new;

node *temp = new node;

我认为你的功能应该或多或少看起来像这样

node* insertfront(node *&root, int v)
{
  node* temp = new node;
  temp->data = v;
  temp->next = root;
  return temp;
}