我需要删除SortedLinkedList中的一个键,但我不能。没有语法错误但代码不起作用。删除节点列表的乞讨,结束和中间的方法。这是我的删除方法:
public void Remove(int key){
LinkedListNode find = Find(key);
if(find == null){
System.out.println("Item is not found.");
return;}
LinkedListNode helper = new LinkedListNode();
helper.next = head;
LinkedListNode p = helper;
while(p.next != null){
if(p.next.key == key){
LinkedListNode next = p.next;
p.next = next.next;
}else{
p = p.next;
}
return;
}
noOfNodes--;
}
public void Remove(LinkedListNode node) {
Remove(node.key);
}
另一个代码:
public void Remove(int key){
LinkedListNode temp = Find(key);
if(temp==null)
{
System.out.println("Item not found");
return;
}
if(head==tail){
head=null;
tail=null;
}
else if(temp.key==head.key){
head=temp.next;
head.prev=null;
//
}else if(temp.key==tail.key){
tail=tail.prev;
tail.next=null;
}else {
temp.prev.next=temp.next;
temp.next.prev=temp.prev;
}
noOfNodes--;
}
public void Remove(LinkedListNode node){
Remove(node.key);
}
提前致谢!
答案 0 :(得分:0)
问题出在这里:
while(p.next != null){
if(p.next.key == key){
LinkedListNode next = p.next;
p.next = next.next;
}else{
p = p.next;
}
return; //--> why are you returning here ... Line 1
}
从第1行返回,意味着您刚刚检查了第一个值,将其等于key或不等于key,您只是打破while循环并返回调用方法或父方法。这绝对不会消除价值。