两次删除链表有什么区别?

What's difference between two deletion of linked-list?

本文关键字:什么 区别 链表 删除 两次      更新时间:2023-10-16

我写了两个方法两个删除给定节点,尽管它们是相同的。但是,它们给出了不同的结果。

首先,

    node *q = c->next;
    c->data = q->data;              second:  c->data = c->next->data;
    c->next = q->next;                       c->next = c->next->next;
    delete q;                                delete c->next;

我尝试示例(链接列表:1,2,3,4,5,6,7,8,9,10和c == 3)第一种方法给出了结果:1,2,4,5,6,7,8,9,10,这是我想要的

但第二个给予:1,2,4,-572662307我不明白什么有所不同。

一个显着的区别是,在第一个之后, c->next将指向(在算法之前) c->next->next。第二个之后,c->next将指向删除的节点。

另一个区别是,第一个删除了算法之前的 c->next,而第二个则删除了算法之前曾经为 c->next->next的节点。