删除链表数据域相同节点
时间: 2024-04-08 09:34:30 浏览: 11
要删除链表中数据域相同的节点,可以使用两个指针进行遍历和删除操作。假设链表的节点定义如下:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
```
以下是删除链表中数据域相同节点的代码示例:
```python
def remove_duplicates(head):
if head is None:
return head
curr = head
while curr is not None:
runner = curr
while runner.next is not None:
if runner.next.val == curr.val:
runner.next = runner.next.next
else:
runner = runner.next
curr = curr.next
return head
```
这段代码首先检查链表是否为空,如果为空则直接返回。然后使用两个指针`curr`和`runner`进行节点遍历,其中`curr`指针用于遍历整个链表,而`runner`指针用于检查当前节点后面的节点是否与当前节点的数据域相同。如果相同,则将`runner`指针所指向的节点从链表中删除,否则继续遍历下一个节点。最后返回删除重复节点后的链表头部。
请注意,这里假设链表已经按照数据域的顺序进行排序。如果链表未排序,需要先对链表进行排序,然后再执行上述删除操作。