双向链表 - 指定尾部
Doubly Linked List - appointing a tail
你好,我有一个没有实现的双向链表,我的问题是我不确定如何指定尾巴,因为 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);
}
}
您只需要检查 last
是否为空。这样,您第一次将某些内容放入列表时,它就是 first
和 last
。你也不需要在实例化新Element的时候检查first
是否为null,系统会帮你填入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);
}
}
}
这是一个简单的 addElement 方法,我们首先检查一个空列表,否则我们遍历列表直到到达末尾。到达末尾后,我们将新元素添加到列表中并将其设置为前一个最后一个元素。最后我们将最后一个变量设置为我们刚刚添加到列表中的新元素。
void addElement(int val)
{
if(first == null)
{
first = new Element(val, null, null);
last = first;
}
else
{
Element ref = first;
while(ref.next != null)
ref = ref.next;
ref.next = new Element(val, ref, null); //added to the end of the list
last = ref.next; //set the last Element to the one we just created
}
}
你好,我有一个没有实现的双向链表,我的问题是我不确定如何指定尾巴,因为 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);
}
}
您只需要检查 last
是否为空。这样,您第一次将某些内容放入列表时,它就是 first
和 last
。你也不需要在实例化新Element的时候检查first
是否为null,系统会帮你填入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);
}
}
}
这是一个简单的 addElement 方法,我们首先检查一个空列表,否则我们遍历列表直到到达末尾。到达末尾后,我们将新元素添加到列表中并将其设置为前一个最后一个元素。最后我们将最后一个变量设置为我们刚刚添加到列表中的新元素。
void addElement(int val)
{
if(first == null)
{
first = new Element(val, null, null);
last = first;
}
else
{
Element ref = first;
while(ref.next != null)
ref = ref.next;
ref.next = new Element(val, ref, null); //added to the end of the list
last = ref.next; //set the last Element to the one we just created
}
}