📌  相关文章
📜  用于从排序链表中删除所有重复项的 C++ 程序(1)

📅  最后修改于: 2023-12-03 15:11:15.602000             🧑  作者: Mango

用于从排序链表中删除所有重复项的 C++ 程序

如果你正在处理一个排序的链表,并且需要删除重复的元素,那么这个 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

你也可以根据你的需求修改和调整这段代码。