【发布时间】:2014-02-24 02:01:03
【问题描述】:
我想实现一个LinkedListremove 方法来删除任何特定位置的项目,但在这种情况下,我最感兴趣的是删除列表开头(第零位)的项目。
我的代码适用于大于零的 n 值,因此我为 when n==0 编写了一个 if 语句,但我不明白为什么它不起作用,直到我用谷歌搜索了答案,在我看来这与我的答案相似写。
public class LinkedList<E> extends Node<E>{
public LinkedList(){}
public Node<E> head;
//removes node at n and returns contents of removed node;
public E remove(int n){
Node<E> current = head; T info;
if(n==0){info=current.getInfo();
head=current.getNext();return info;}
}
}
我最初的陈述是head=head.getNext() 而不是head=current.getNext() 因此我的问题。两者有什么区别?
它们是否相同但执行方式不同? 谢谢
【问题讨论】:
-
你知道,docs.oracle.com/javase/7/docs/api/java/util/… 已经存在了吗?你可以看看那个的源代码;)
-
第一个修改了
head(呃!),因此删除了“头”节点。第二个使任何current指向的节点成为“头”。当然,在上面(有点荒谬)remove方法中,current在入口处总是设置为等于head,所以如果 n==0 则“头”节点将被删除。
标签: java generics setter getter singly-linked-list