下面是java中实现的SingleLinkedList
类型抽象。
public class SingleLinkedList<T>{
/**
* Abstract data type constitutes constructor and selector functions
* written below under representation that hold below invariant:
* If a recursive list s is constructed from a first element f and a recursive list r, then
* • first(s) returns f, and
* • rest(s) returns r, which is a recursive list.
*/
/**
* Representation - start
*/
private static SingleLinkedList<?> emptyList = null;
private T item;
private SingleLinkedList<T> restOfTheList;
/**
* Constructor
* @param first
* @param rest
*/
public SingleLinkedList(T first, SingleLinkedList<T> rest){
this.item = first;
this.restOfTheList = rest;
}
/**
* Selector function
* @param list
* @return
*/
private T first(){
return this.item;
}
/**
* Selector function
* @param list
* @return
*/
private SingleLinkedList<T> rest(){
return this.restOfTheList;
}
/**
* Representation - end
*/
/**
* User interface - starts
* These methods must take help of constructor or selector and some helper functions.
*/
public final int length(){
return this.lengthOfTheList(0);
}
protected final int lengthOfTheList(int length){
if(this.rest() == emptyList){
return length;
}else{
return this.rest().lengthOfTheList(length + 1);
}
}
public final T getItem(int position){
if(position == 1){
return this.first();
}else{
return this.rest().getItem(position - 1);
}
}
public final void removeItem(int position){
}
public static void main(String[] args){
SingleLinkedList<Integer> list = new SingleLinkedList<Integer>(3, new SingleLinkedList<Integer>(2, new SingleLinkedList<Integer>(1, null)));
list = new SingleLinkedList<Integer>(4, list);
list.removeItem(3);
}
}
我需要一些关于完成removeItem()
方法的提示。
这项工作不是任何家庭作业问题的一部分。
我正在尝试将此python code移植到java。
请帮助我!!
答案 0 :(得分:0)
如果您要删除列表中的特定项,则需要跟踪2件事
现在,让我们想一想逻辑。我们假设我列出了以下项目:
1 -> 3 -> 5 -> 7 -> 9 -> NULL
^ ^ ^
head item to remove tail
因此,如果我们要删除7,我们需要将下一个节点设为5点到9。
1 -> 3 -> 5 -/ 7 -> 9 -> NULL
^ -----------^ ^
head tail
执行此操作时必须的情况:
这应该足以提示&#34;&#34;让你开始一如既往,想办法成为魔鬼的拥护者&#34 ;;什么会打破我的计划。如果以这种方式接近结构,那么在推断数据结构时,尤其是如果它是可变的,您将避免很多麻烦。