gpt4 book ai didi

java - 双向链表的输出为空

转载 作者:行者123 更新时间:2023-12-01 23:27:18 25 4
gpt4 key购买 nike

我目前陷入了用 Java 实现双向链表的困境。我实现了一些方法(addLast/addFirst/size/Remove/removeLast/removeFirst/output)。当我尝试在列表中添加元素时,输出将始终为空。该代码只是一个原始版本,很确定其中存在一些错误。这是列表的 Element 类:

public class Element<E> {
private Element<E> next;
private Element<E> prev;
//private String value;
private Object elem;
private E value;

public Element() {
next = null;
prev = null;
value = null;
}

/**
* @param value the value to set
*/
public void setValue(E value) {
this.value = value;
}

/**
* @return the value
*/
public E getValue() {
return value;
}

public Object getElem() {
return elem;
}

public void setElem(Object elem) {
this.elem = elem;
}



/**
* @return the next
*/
public Element<E> getNext() {
return next;
}
/**
* @param next the next to set
*/
public void setNext(Element<E> next) {
this.next = next;
}
/**
* @return the prev
*/
public Element<E> getPrev() {
return prev;
}
/**
* @param prev the prev to set
*/
public void setPrev(Element<E> prev) {
this.prev = prev;
}

这里是带有 addFirst 和输出方法的实际 List 的类。

    public class List<E> {
private Element<E> first;
private Element<E> last;
private int size;
private Element<E> element = this.first;


/**
* @param value uebergebener Wert fuer Listenelement
* Fuege ein Listenelement an erster Stelle in die Liste ein
*/
public void addFirst(E value) {
Element<E> newElement = new Element<E>();
newElement.setValue(value);

if (size == 0) {
first = newElement;
last = newElement;
}
else {
newElement.setNext(first);
first.setPrev(newElement);
first = newElement;
}
size++;
}
public void output() {
Element<E> temp = first;
while (temp != null) {
System.out.println(temp.getElem());
temp = temp.getNext();
}

这里是测试类

    public static void main(String[] args) {
List<String> newList = new List<String>();
newList.addFirst("bla");


newList.output();

我真的被困在这里了。 Element类中的构造函数是否错误?提前致谢!

最佳答案

首先,令人困惑的是为什么你同时拥有两者

private Object elem;
private E value;

它们之间有什么区别?我会摆脱 elem 字段和所有相关的 getter/setter。

但是,您真正的问题是您从未在代码中设置 elem,因此只需将 output 方法更改为

System.out.println(temp.getValue()); // instead of temp.getElem()

它会起作用。

关于java - 双向链表的输出为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19794724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com