我试图删除单个链接列表中两个其他节点中间的节点。删除位于链接列表中间的节点
public void deleteAfter(Node del){
del.next=del.next.next;
}
它删除指定节点del之后的节点。
我得到一个空指针异常。我认为这个问题是删除后与其他节点的链路broken.How我来修补它。这里是我的全码:
public class Node{
public Object item;
public Node next;
public Node(){
item=null;
next=null;
}
public Node(Object x){
item=x;
next=null;
}
public void insertAfter(Node after,Object x){
Node newNode=new Node(x);
newNode.next=after.next;
after.next=newNode;
}
public void deleteAfter(Node del){//Deletes the node that is after the specified node
del.next=del.next.next;
}
public static void main (String args[]){
Node front=new Node(),p=new Node(),q=new Node();
p.item="green";
q.item="red";
p.next=q;
front=p;
front.deleteAfter(p);
front.insertAfter(p,"black");
front.insertAfter(q,"blue");
front.insertAfter(q.next,"orange");
front.deleteAfter(q);
System.out.println(front.item);
System.out.println(front.next.item);
System.out.println(front.next.next.item);
System.out.println(front.next.next.next.item);
}
}
您的删除代码不处理输入本身是最后一个节点的情况。 – jxh
这是当要删除的节点位于其他两个节点的中间时 –