c++ - 使用简单代码从已排序的链表中删除重复节点

标签 c++ singly-linked-list

我正在尝试编写一种方法来从已排序的链表中删除重复节点。如果该方法获得输入链表: 1->1->2->2->3->3 它应该使链表像 1->2->3 。但问题是它返回 1->1->2->3 这意味着第一个重复元素未确定!这是我的代码:

void removeDuplicates(Node head)
{
  Node* Current = &head;
  while(Current != NULL && Current->next != NULL)
  {
    while(Current->next != NULL && Current->next->info == Current->info)
        Current->next = Current->next->next;

    Current=Current->next;
  }
}

添加了完整代码:https://paste.ubuntu.com/p/hstGyDJrkN/

最佳答案

您按值传递 head,因此您创建了 head 节点的拷贝,并更改​​了拷贝的下一个字段,而不是原始的 head 指针。你应该通过引用传递指针,所以你的签名应该是这样的

void removeDuplicates(Node* &head)

所以你将修改实际的头指针

关于c++ - 使用简单代码从已排序的链表中删除重复节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49489946/

相关文章:

c++ - 未解析的外部符号,带有自制委托(delegate)

java - 单链表中头节点的 nextRef 如何在更新尾节点的 nextRef 时更新

C 用链表排序不能正确排序

c++ - Splice_after执行forward_list

c++ - Visual Studio C++ 头文件

c++ - 需要有关#include 的帮助似乎不起作用

c++ - 如何划分boost::optional<double>?

c++ - OpenGL Assimp 导入模型不渲染

无法创建单向链表

java - C++链表ListElement类头文件麻烦