双重链表 - 任命尾巴

时间:2018-03-13 21:03:42

标签: java linked-list doubly-linked-list

你好我有一个没有实现的双向链表,我的问题是我不知道怎么能找到一个尾巴,因为Element的构造函数让我感到困惑,这是我的功课所以它必须完成该构造函数。 到目前为止,我的方法addFirst完成了它的工作,但它没有尾巴

我不能使用getter和setter

谢谢

public class Element {
    private int value;
    private Element next;
    private Element previous;

    public Element(int value, Element next, Element previous) {
        this.value = value;
        this.next = next;
        this.previous = previous;
    }
}

public class Liste {

    private Element first;
    private Element last;

    void addFirst(int value) {
        if(this.first!=null) {
            this.first= new Element(value,this.first,null);
        }
        else {
            this.first= new Element(value,null,null);
        }

    }

2 个答案:

答案 0 :(得分:1)

您只需要检查last是否为空。这样,第一次在列表中放置内容时,就是firstlast。在实例化新元素时,您也不需要检查first是否为空,系统会为您输入null。

public class Element {
    private int value = 0;
    private Element next = null;
    private Element previous = null;

    public Element(int value, Element next, Element previous) {
        this.value = value;
        this.next = next;
        this.previous = previous;
    }

    public Element insertBefore(int value) {
        Element that = new Element(value, this, null);
        previous = that;
        return that;
    }
} 

public class Liste {
    private Element first;
    private Element last;

    void addFirst(int value) {
        if (first == null) {
            Element newElement = new Element(value, null, null);
            first = newElement;
            last = newElement;
        } else {
            first = first.insertBefore(value);
        }
    }
}

答案 1 :(得分:1)

这是一个简单的addElement方法,我们首先检查一个空列表,否则我们遍历列表直到结束。一旦我们到达最后,我们将新元素添加到列表中并将其设置在前一个元素之前。最后,我们将最后一个变量设置为刚刚添加到列表中的新元素。

WITH expected this input to be a TRUE/FLASE block, but got a TRUE/FALSE instead