有表头的链表怎么删除链表里的重复数据,写出代码
时间: 2024-03-26 15:34:53 浏览: 47
以下是用哈希表实现删除重复节点的示例代码,其中假设链表的节点类型为 `ListNode`,包含一个整型的数据成员 `val` 和一个指向下一个节点的指针 `next`:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_duplicates(head: ListNode) -> ListNode:
# 定义哈希表和指针变量
hash_set = set()
cur = head
pre = None
# 遍历链表
while cur:
# 如果该节点的值已经出现过,则将该节点从链表中删除
if cur.val in hash_set:
pre.next = cur.next
# 如果该节点的值没有出现过,则将该节点的值添加到哈希表中
else:
hash_set.add(cur.val)
pre = cur
# 继续遍历链表
cur = cur.next
return head
```
以上代码中,使用哈希表记录链表中已经出现过的元素,指针变量 `pre` 用于记录当前节点的前一个节点,以便将当前节点从链表中删除。最后返回头节点即可。
阅读全文