删除链表重复元素c++
时间: 2024-09-13 07:00:28 浏览: 52
Cpp-Leetcode题解之第83题删除排序链表中的重复元素.zip
删除链表中重复元素的过程通常涉及遍历链表,并对每个节点的值进行比较,如果发现重复,则跳过该节点的后续元素,直接指向下一个不重复的节点。这可以使用迭代或递归的方式实现。以下是使用迭代的一种常见C++实现方法:
```cpp
#include <iostream>
using namespace std;
// 定义链表节点结构
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* removeDuplicates(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return head;
}
ListNode* current = head;
while (current != nullptr && current->next != nullptr) {
if (current->val == current->next->val) {
// 如果当前节点的值等于下一个节点的值,删除下一个节点
ListNode* temp = current->next;
current->next = current->next->next;
delete temp;
} else {
current = current->next; // 否则,继续遍历
}
}
return head;
}
int main() {
// 示例链表:1->1->2->3->3
ListNode* list = new ListNode(1);
list->next = new ListNode(1);
list->next->next = new ListNode(2);
list->next->next->next = new ListNode(3);
list->next->next->next->next = new ListNode(3);
ListNode* result = removeDuplicates(list);
// 输出处理后的链表:1->2->3
while (result != nullptr) {
cout << result->val << " ";
result = result->next;
}
return 0;
}
```
阅读全文