通过方法访问链接列表

时间:2014-12-04 06:24:43

标签: java linked-list

在这个方法中,我想从链表中删除所有零,但我不知道如何访问链表。我不允许更改方法的参数,但我可以更改返回。如何访问链接列表进行修改?

public domino removeZero() {
    // ****** student exercise



    return this;
}

这是调用方法的行:

train = train.removeZero();

该课程的名称是多米诺骨牌。

这是完整的程序http://pastebin.com/EwNJj9mV

2 个答案:

答案 0 :(得分:1)

您可以使用一些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;
}
}

现在,当你通过setter方法

获取你的链表时
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;
}

答案 1 :(得分:0)

我怀疑你需要学习一些关于面向对象编程的基础知识然后重新提出问题。您在问题中包含的方法(removeZero)是类(多米诺骨牌)的成员,该类具有您可以在方法内访问的字段。换句话说,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;
}

顺便说一下,你应该告诉老师用大写字母来开始上课。它应该被称为Domino,而不是多米诺骨牌。