当前位置: 首页 > 知识库问答 >
问题:

从已排序的单链表中删除重复值

缑永年
2023-03-14

我试图从排序的单链表中删除重复的值。

这是我的密码

SinglelyLinkedListNode*移除的副本(SinglelyLinkedListNode*头){

if(head==NULL)
     return head;

  int flag=0;
  SinglyLinkedListNode* p,*q,*temp;

  for(p=head;p->next!=NULL;p=p->next)
      {
          if(flag==1)
             {
                 p=temp;
                 flag=0;
             }

          q=p->next;

          if(q->data==p->data)
             {
                 temp=p;
                 p->next=q->next;
                 free(q);
                 flag=1;
             }
      }

      return head;

}

然而,当单向链表为3-时,代码失败

共有1个答案

方波娃
2023-03-14

请试试这个代码-

void removeDuplicates(SinglyLinkedListNode* head)  
{  
    SinglyLinkedListNode* current = head;  
  
    SinglyLinkedListNode* nextNode;  
      
    if (current == NULL)
    return;  
  
    while (current->next != NULL)  
    {  
    if (current->data == current->next->data)  
    {       
        nextNode = current->next->next;  
        free(current->next);  
        current->next = nextNode;
    }  
    else
    {  
        current = current->next;  
    }  
    }  
}
 类似资料:
  • 结果:[1,2,3,3,3,4,4][1,2,3,3,3,4,4]

  • 问题内容: 我想从排序的链表{0 1 2 2 3 3 4 5}中删除重复项。 ` ` prev.setNext(tempHeader)在while循环内无法正常工作。理想情况下,当prev = 2且tempHeader = 3时,prev.next应该是data = 3的节点。 Printlist函数仅使用标题指针并打印列表。 节点定义如下。 问题答案: 循环已排序,因此您知道重复项将彼此相邻。如

  • 本文向大家介绍Java实现删除排序链表中的重复元素的方法,包括了Java实现删除排序链表中的重复元素的方法的使用技巧和注意事项,需要的朋友参考一下 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多

  • 问题内容: 我的数据库中有一个表,其中有要删除的重复记录。我不想为此创建具有不同条目的新表。我想要的是从现有表中删除重复的条目,而无需创建任何新表。有什么办法吗? 看到这些都是我的字段: id对于每一行都是唯一的。 L11_data对于相应的动作字段是唯一的。 L11_data具有公司名称,而动作具有行业名称。 因此,在我的数据中,我在L11_data中有各自行业的重复公司名称。 我要拥有的是存储

  • 问题内容: 数据库类型为PostGres 8.3。 如果我写了: 我有一些计数超过1的行。如何取出重复的行(我仍然希望每个行都保留1行,而不是+1行…我不想删除所有行。) 例子: 应该变成: 我找到的唯一答案是 在那里,但是我想知道是否可以在没有哈希列的情况下做到这一点。 警告 我没有具有唯一编号的PK,因此无法使用min(…)技术。PK是3个字段。 问题答案: 这是所有表都应具有主键的众多原因之

  • NowCoder 题目描述 解题描述 // java public ListNode deleteDuplication(ListNode pHead) { if (pHead == null || pHead.next == null) return pHead; ListNode next = pHead.next; if (pHead.val == n