0

我正在尝试插入一些节点。我的实现基于斯坦福教程。http://cslibrary.stanford.edu/103/LinkedListBasics.pdf

以下是我的代码。

 struct node
 {
      int p_data;
      struct node*   p_next;

      node(node* head, int data)
      {
            p_next = head;
            p_data = data;
      }

      explicit node(int data)
      {
            p_next = nullptr;
            p_data = data;
      }
 }

这是我的插入功能

 node* insert_node(node* head, int data)
 {
      return new node(head, data);
 }

而我想要做的是,我为初始设置了 1、2、3 的列表,并想添加更多元素,如 5、6、7。以下是我的尝试,但插入没有做任何事情。所以我只打印出 1、2、3。在主函数中,我有......

  struct node* head     = new node(NULL);
  struct node* nodep_01 = new node(NULL);
  struct node* nodep_02 = new node(NULL);

  head->p_data = 1;
  head->p_next = nodep_01;

  nodep_01->p_data = 2;
  nodep_01->p_next = nodep_02;

  nodep_02->p_data = 3;
  nodep_02->p_next = nullptr;

因此,如果我打印它,我会得到 1、2、3。然后我尝试再插入一个值为 5 的元素,但它什么也没做。

  insert_node(head, 5);

有人可以帮我这样做吗?我想在这个列表中插入元素......提前谢谢!

4

2 回答 2

1
insert_node(head, 5);

应该:

head = insert_node(head, 5);
于 2013-08-21T08:11:55.073 回答
0

您也应该将 Head 转移到当前节点!!!

当前,您的头指向带有数据 1 的节点在添加带有数据 5 的节点后,您的头仍位于带有数据 1 的节点

您的进一步添加是无用的,它会导致您不知道的内存泄漏

查看 Ross Bencina 的答案并输入 head = insert_node(head, 5); 而不是只调用 insert_node(head, 5);

于 2013-08-21T08:24:44.813 回答