你好我有一个没有实现的双向链表,我的问题是我不知道怎么能找到一个尾巴,因为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);
}
}
答案 0 :(得分:1)
您只需要检查last
是否为空。这样,第一次在列表中放置内容时,就是first
和last
。在实例化新元素时,您也不需要检查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