单链表在中间添加节点

时间:2012-05-13 01:38:28

标签: c++ pointers linked-list

class List {
  ListNode *head;
  ListNode *prev;
};

class ListNode {
  int data;
  ListNode *next;
  friend class List;
  ListNode(int d, ListNode *n) : data(d), next(NULL) {}
  void insertM(int d) {
    ListNode *ptr, *temp, *curr;
    ptr = head;
    while (ptr->data < d) {
      prev = ptr;
      ptr = ptr->next;
    } // end while
    temp = prev->next;
    curr = new ListNode(d, ptr);
    curr->next = prev->next; // or temp->next
    prev->next = curr;
    ;
  }
};

List mylist;

在这个函数中,我试图在链表的中间添加一个节点。其他功能在后面和前面添加项目就好了。当我在列表的中间添加时,我的prev-&gt; next链接到curr就好了,但是curr-&gt; next指向NULL。

我一直试图让这个程序工作超过1.5小时。我将感激你的帮助。这是作业。

1 个答案:

答案 0 :(得分:1)

您要使用的一般程序是:

  1. 向下浏览next指针,直到您到达要插入的节点后(称之为A)
  2. 更改插入的节点(B)的next指针以匹配A的next指针
  3. 将A的next指针更改为指向B
  4. 从您的代码中可以看出,您正在尝试维护整数的排序列表。这是家庭作业你可能不会得到代码片段,但是从浏览你的代码,我不得不问你为什么在你的节点构造函数中采用下一个参数,但是然后将下一个值设置为null。如果没有看到代码的其余部分,我无法确定,但我会将第9行的next(NULL)更改为next(n),然后删除底部附近的curr->next行< / p>