在c++中删除双链表中的dup

Removing dups from doubly linked list in C++

本文关键字:dup 链表 删除 c++      更新时间:2023-10-16

虽然在页面上运行很好,但当我试图在c++中运行该代码时,它会抛出异常"访问违反读取位置",有人请帮助我…

void dll::compress(){
    Node *temp1, *temp2, *dup;
    temp1 = head;
    while (temp1 && temp1->next)
    {
        temp2 = temp1->next;
        while (temp2)
        {
            if (temp1->data == temp2->data)
            {
                dup = temp2;
                if (temp2->next != NULL){
                    temp2 = temp2->next;
                    temp2->prev = temp1;
                    temp1->next = temp2;
                    delete dup;
                }
                else {
                    temp1->next = NULL;
                    delete temp2;
                }
            }
            else
            {
                temp2 = temp2->next;
            }
        }
        temp1 = temp1->next;
    }
}

delete temp2;之后继续循环,但temp2既非NULL又无效。

您需要将其设置为NULLbreak退出循环。