📅  最后修改于: 2023-12-03 15:11:15.602000             🧑  作者: Mango
如果你正在处理一个排序的链表,并且需要删除重复的元素,那么这个 C++ 程序可以帮助你完成这个任务。
这个程序使用两个指针来遍历链表。一个指针引用当前节点,另一个指针引用前一个节点。如果当前节点的值等于前一个节点的值,那么就移除当前节点。如果当前节点的值不等于前一个节点的值,那么就继续遍历下一个节点。
这是一个示例程序,你可以根据你的实际情况进行修改和调整。
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL || head->next == NULL) {
return head;
}
ListNode* prev = head;
ListNode* curr = head->next;
while (curr != NULL) {
if (curr->val == prev->val) {
prev->next = curr->next;
} else {
prev = curr;
}
curr = curr->next;
}
return head;
}
你可以把这段代码放到你的 C++ 文件中,并且调用 deleteDuplicates
函数来删除重复的节点。例如:
ListNode* head = new ListNode(1);
head->next = new ListNode(1);
head->next->next = new ListNode(2);
head->next->next->next = new ListNode(3);
head = deleteDuplicates(head);
这会把链表变成 1 -> 2 -> 3
。
你也可以根据你的需求修改和调整这段代码。