在这种方法中,我假设从链接列表中删除所有零,但我不确定如何访问链表。我不允许更改方法的参数,但我可以更改返回。如何访问链接列表进行修改?
public domino removeZero() {
// ****** student exercise
return this;
}
这是调用该方法的行:
train = train.removeZero();
类的名称是多米诺骨牌。
这是完整的程序 http://pastebin.com/EwNJj9mV
你可以使用一些getter setter方法就像将链接列表存储在一个不同类的静态变量中,而不是在您的方法中获取该静态变量的值。
import java.util.LinkedList;
public class linkedListStorage {
private static LinkedList linkedList;
public static LinkedList getLinkedList() {
return linkedList;
}
public static void setLinkedList(LinkedList linkedList) {
linkedListStorage.linkedList = linkedList;
}
}
现在,当您获得链接列表时,请通过二传手方法放置它
import java.util.LinkedList;
class JunitTest {
public static void main(String[] args) {
// set linked list to storage class's variable
linkedListStorage.setLinkedList(your linked list variable);
}
}
现在在您的方法中使用您的链表
public domino removeZero() {
// ****** student exercise
// get your linked list from storage class
LinkedList ll = linkedListStorage.getLinkedList();
return this;
}
我怀疑你需要学习一些关于面向对象编程的基础知识,然后重新提出这个问题。您在问题中包含的方法 (removeZero) 是类 (domino) 的成员,该类具有您可以在方法内部访问的字段。换句话说,removeZero 可以访问链表,因为它是链表对象的方法。
在这种情况下,代码将如下所示:
public domino removeZero() {
domino first = null;
for (domino current = this; current.next != null; current = current.next) {
if (current.spot1 == 0 || current.spot2 == 0) {
if (current.back != null)
current.back.next = current.next;
if (current.next != null)
current.next.back= current.back;
} else if (first == null) {
first = current;
}
}
return first;
}
顺便说一句,你应该告诉你的老师使用大写字母来开始班级名称。它应该被称为多米诺骨牌,而不是多米诺骨牌。