问:删除循环链表中重复元素的程序。

2025年1月8日 | 阅读 8 分钟

说明

在此程序中,我们将创建一个循环链表并删除列表中的重复节点。我们将一个节点与列表的其余部分进行比较,并检查重复项。如果找到重复项,则从列表中删除重复节点。

1->2->2->4->3

在上面的列表中,我们可以看到节点 2 在列表中出现了两次。因此,我们将有一个 current 节点遍历列表。index 指向 current 的下一个节点。Temp 指向 index 前面的节点。找到重复项时,通过将 temp.next 指向 index.next 来删除它。删除重复项后的列表

1->2->4->3

算法

  1. 定义一个 Node 类,它表示列表中的一个节点。它有两个属性 data 和 next,next 将指向下一个节点。
  2. 定义另一个类来创建循环链表,它有两个节点:head 和 tail。
  3. removeDuplicate() 将删除列表中的重复节点
    1. current 节点将指向 head,并用于遍历列表。
    2. index 将指向 current 的下一个节点,temp 将指向 index 的前一个节点。
    3. 我们将比较 current.data 和 index.data。如果找到匹配项,则通过将 temp 的 next 指向 index 的 next 来删除重复数据。
    4. 将 index 递增到 index.next,将 current 递增到 current.next。
    5. 重复步骤 c 到 d,直到所有重复项都被删除。

解决方案

Python

输出

Originals list: 
 1 2 3 2 2 4
List after removing duplicates: 
 1 2 3 4

C

输出

Originals list: 
 1 2 3 2 2 4
List after removing duplicates: 
 1 2 3 4

JAVA

输出

Originals list: 
 1 2 3 2 2 4
List after removing duplicates: 
 1 2 3 4

C#

输出

Originals list: 
 1 2 3 2 2 4
List after removing duplicates: 
 1 2 3 4

PHP

输出

Originals list: 
 1 2 3 2 2 4
List after removing duplicates: 
 1 2 3 4
 
下一主题#