为了账号安全,请及时绑定邮箱和手机立即绑定

LinkedList删除:为什么我们不用前一个覆盖头部?

LinkedList删除:为什么我们不用前一个覆盖头部?

烙印99 2024-01-28 16:36:17
检查我的数据结构,以满足一些新的工作面试要求。所以我有一个链表的删除方法。public Link delete(int key) {    Link current = first;    Link previous = first;     while(current.iData != key) {        if(current.next == null)             return null;        else {            previous = current;             current = current.next;        }    }    if(current == first)        first = first.next;    else        // just bypass it        previous.next = current.next;    return current;}我想到目前为止我已经明白了。但我对这条线感到好奇。// just bypass itprevious.next = current.next;为什么我们不使用 覆盖head(在本例中表示为first)previous?或者会是错误的逻辑吗?喜欢// just bypass itprevious.next = current.next;first=previous;我的意思是previous和current只是迭代列表的指针。而删除后的真实数据位于右侧first?抱歉,如果这样想会很奇怪。有时我奇怪的直觉只是在研究算法时出现,主要是因为我有点弱
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

这样做会导致链表丢失前一个节点之前的所有节点。如果您有一个包含以下值的链接列表:

[1, 2, 3, 4, 5, 6, 7, 8]

当你打电话时delete(7),你的头会指向6,然后你就会得到一个 的链接列表[6, 8]


查看完整回答
反对 回复 2024-01-28
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信