【问题标题】:java remove node linked listjava删除节点链表
【发布时间】:2017-02-09 15:18:32
【问题描述】:

我有一个链表,我想根据其中的数据从中删除一个节点。

public Node deleteNode(String a){

    Node<String> temp = findNode(head, a);

    temp = temp.previous;

    System.out.println(temp.data);

    temp = temp.getNext().getNext();

    return temp;

}

这是我的代码,理论上它应该可以工作,但它什么也没做。

如果我删除“temp = temp.previous;”行代码有效,但在我要删除的节点之后删除节点。如果我按原样运行它,那么它不会删除任何东西。

打印语句显示我目前正在处理使用 findNode(head, a) 方法找到的节点之前的节点,但不知何故有些事情搞砸了。

【问题讨论】:

    标签: java linked-list


    【解决方案1】:

    如果要移除一个节点,需要修改相邻节点的nextprevious字段。

    if (temp.next!=null) {
        temp.next.previous = temp.previous;
    }
    if (temp.previous!=null) {
        temp.previous.next = temp.next;
    }
    

    这会将temp 的两个相邻节点相互链接,绕过temp

    那么删除temp 对其邻居的引用可能是有意义的,因此它看起来不再是列表的一部分。

    temp.next = null;
    temp.previous = null;
    

    如果您对列表中的head 和/或tail 有单独的引用,则在您删除的节点位于列表开头或结尾的情况下,您需要重新分配它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多