13. Python 程序从双向链表中删除重复元素。17 Mar 2025 | 4 分钟阅读 在此程序中,我们将创建一个双向链表,并通过遍历链表来删除重复元素(如果存在)。  删除重复元素后的列表  在上面的列表中,节点 2 重复了三次,节点 3 重复了两次。 Current 指向 head,index 指向 current 的下一个节点。开始遍历列表,直到找到一个重复项,即 current 的数据等于 index 的数据。在上面的例子中,第一个重复项将在位置 4 找到。将 index 赋值给另一个节点 temp。将 index 的前一个节点与 index 的下一个节点连接起来。删除指向重复节点的 temp。此过程将继续,直到删除所有重复项。 算法- 定义一个 Node 类,它表示列表中的一个节点。它将有三个属性:数据、previous 指向前一个节点,以及 next 指向下一个节点。
- 定义另一个用于创建双向链表的类,它有两个节点:头节点和尾节点。最初,头节点和尾节点将指向 null。
- addNode() 将向列表中添加节点。
- 它首先检查头节点是否为 null,然后将节点作为头节点插入。
- 头节点和尾节点都将指向新添加的节点。
- 头节点的前一个指针将指向 null,尾节点的下一个指针将指向 null。
- 如果头节点不为 null,则新节点将插入到列表的末尾,使得新节点的前一个指针将指向尾节点。
- 新节点将成为新的尾节点。尾节点的下一个指针将指向 null。
a. removeDuplicateNode() 将从列表中删除重复节点。 - 定义一个新节点 current,它最初将指向头节点。
- 节点 index 将始终指向 current 的下一个节点。
- 循环遍历列表,直到 current 指向 null。
- 检查 current 的数据是否等于 index 的数据,这意味着 index 是 current 的重复项。
- 节点 temp 将指向 index 以存储重复节点。
- 由于 temp 指向 index(这是一个重复节点),因此将 temp 设置为 null。
a. display() 将显示列表中存在的所有节点。 - 定义一个新节点“current”,它将指向头节点。
- 打印 current.data 直到 current 指向 null。
- 在每次迭代中,current 将指向列表中的下一个节点。
程序输出 Originals list:
1 2 3 2 2 4 5 3
List after removing duplicates:
1 2 3 4 5
|