删除单链表中多余的元素值相同的结点
时间: 2024-05-02 15:22:12 浏览: 11
要删除单链表中多余的元素值相同的结点,可以使用两个指针,一个指针遍历整个链表,另一个指针指向当前结点的前一个结点,用来删除重复结点。
具体步骤如下:
1. 定义两个指针,分别指向当前结点和前一个结点,初始时前一个结点指向头结点,当前结点指向头结点的下一个结点。
2. 遍历整个链表,对于当前结点,如果它的值与前一个结点的值相同,就将前一个结点的 next 指针指向当前结点的下一个结点,即跳过当前结点,然后释放当前结点的内存。
3. 如果当前结点的值与前一个结点的值不同,则将前一个结点指向当前结点,继续遍历下一个结点。
4. 最后返回头结点即可。
下面是具体的实现代码:
```
void deleteDuplicates(ListNode *head) {
if (head == nullptr || head->next == nullptr) {
return;
}
ListNode *prev = head;
ListNode *p = head->next;
while (p != nullptr) {
if (prev->val == p->val) {
prev->next = p->next;
delete p;
p = prev->next;
} else {
prev = p;
p = p->next;
}
}
}
```