关于删除链表中的节点

时间:2017-06-30 17:37:50

标签: java singly-linked-list

我正在编写代码来删除列表中的节点,而我遇到的问题是我无法弄清楚的。

我的delete_node函数:

public void delete_node(int data){
    node ptr=head;
    //if 1st node is to be Deleted
    if(ptr != null && ptr.data==data){
        head=ptr.link;
        ptr.link=null;
    }

    //line 90 below:
    while(ptr.link.data!=data){
        ptr=ptr.link;
    }

    ptr.link=ptr.link.link;

}

这是main函数:

public static void main(String[] args) {
    list o=new list();
    o.insert_beginning(1);
    o.insert_beginning(2);

    o.delete_node(2);//line 8

    o.display();

这是错误:

Exception in thread "main" java.lang.NullPointerException

    at list.delete_node(list.java:90)
    at Main.main(Main.java:8)

1 个答案:

答案 0 :(得分:0)

问题是您到达列表的末尾而未找到要删除的<component :is="'example-component'" :value="exampleValue"></component> 。基本上尝试删除列表中没有的node。您还可以访问node,而无需检查ptr.link.data是否有效。这两种方法都可以解决如下:

ptr.link

这只会检查public void delete_node(int data){ node ptr=head; if(ptr == null) return; //if 1st node is to be Deleted if(ptr != null && ptr.data==data){ head=ptr.link; ptr.link=null; } while(ptr.link != null && ptr.link.data!=data){ ptr=ptr.link; } if(ptr.link != null) ptr.link=ptr.link.link; } 最初是否为空,例如列表是空的。它还检查ptr为空。

只是注意,Java中的类是enter image description here,例如ptr.linkList