我从头开始创建一个remove方法,从指定索引处的链表中删除一个Node。
它没有删除正确的节点。我试图在eclipse中使用调试器,但无法解决问题。
每个节点都包含一个令牌。 我已经包含了Token类Node类。 我已经在List类中编写了我的方法并包含了一个Test类。
remove方法当前正在删除指定索引旁边的节点。 我怎样才能让它发挥作用?我为长篇大论道歉。
public class thelist{
public Node head;
public List() {
head = null;
}
public Node remove(int index) {
Node node= head;
for (int i = 0; i < index; i++) {
node= node.next;
}
node.next = node.next.next;
return node;
}
答案 0 :(得分:3)
问题是,一旦达到正确的索引,就会删除NEXT节点,而不是索引处的节点。找到正确的节点后,您可以将ref.previous.next
设置为ref.next
;因此,切断ref
。
public Token remove(int index) {
if (index<0 || index >=size()) {
throw new IndexOutOfBoundsException();
}
Node ref = head;
for (int i = 0; i < index; i++) {
ref = ref.next;
}
if (index == 0) {
head = ref.next;
} else {
ref.previous.next = ref.next;
}
size--;
return ref.getObject();
}
答案 1 :(得分:0)
public void Atposition(E pos){
Node<E> curr = head, prev = null;
if(curr!=null&&curr.getElement()==pos){
curr=head;
head=head.getNext();
size--;
return;
}while(curr!=null&&curr.getElement()!=pos){
prev = curr;
curr=curr.getNext();
}
if(curr==null){
System.out.print("the list is empty");
return;
}
prev.next=curr.next;
}