在Java中创建自定义数据结构,并希望将元素添加到列表的末尾而不是开始

在Java中创建自定义数据结构,并希望将元素添加到列表的末尾而不是开始,java,generics,structure,Java,Generics,Structure,这个标题基本上解释了我想要解决的问题。现在我正在向列表中添加元素,但是它们被添加到列表的开头而不是末尾,我想将它们添加到末尾,但我现在不知道如何添加。下面是我的两个类(元素/链接列表)的外观: 列表元素: public class ListElement<E> { public ListElement<E> next; public E data; public ListElement(E data) { next = null; this.data

这个标题基本上解释了我想要解决的问题。现在我正在向列表中添加元素,但是它们被添加到列表的开头而不是末尾,我想将它们添加到末尾,但我现在不知道如何添加。下面是我的两个类(元素/链接列表)的外观:

列表元素:

public class ListElement<E> {

public ListElement<E> next;
public E data;

public ListElement(E data) {
    next = null;
    this.data = data;

    }
}
public class OptimizedLog<E> implements Iterator<E> {
public ListElement<E> list;

public OptimizedLog() {
    list = null;
}


public void add(E data) {
    ListElement<E> le = new ListElement<E> (data);
    le.next = list; // next becomes null
    list = le; // list becomes le
}
公共类列表元素{
其次是公开上市;
公共电子数据;
公共列表元素(E数据){
next=null;
这个数据=数据;
}
}
使用元素添加到列表中:

public class ListElement<E> {

public ListElement<E> next;
public E data;

public ListElement(E data) {
    next = null;
    this.data = data;

    }
}
public class OptimizedLog<E> implements Iterator<E> {
public ListElement<E> list;

public OptimizedLog() {
    list = null;
}


public void add(E data) {
    ListElement<E> le = new ListElement<E> (data);
    le.next = list; // next becomes null
    list = le; // list becomes le
}
公共类OptimizedLog实现迭代器{ 公众名单; 公共优化dlog(){ 列表=空; } 公共空白添加(E数据){ ListElement le=新的ListElement(数据); le.next=list;//next变为null list=le;//列表变为le }
有人有什么建议吗?

您可以使用以下代码:

public void addFirst(E data) {
    ListElement<E> le = new ListElement<E>(data);
    le.next = list; 
    list = le; 
}

public void addLast(E data) {
    if (list == null) {
        addFirst(data);
        return;
    }
    ListElement<E> current = list;
    while (current.next != null) {
        current = current.next;
    }

    ListElement<E> le = new ListElement<E>(data);
    current.next = le;
}
public void addFirst(E数据){
ListElement le=新的ListElement(数据);
le.next=列表;
列表=le;
}
公共void addLast(E数据){
if(list==null){
addFirst(数据);
返回;
}
ListElement当前=列表;
while(current.next!=null){
当前=当前。下一步;
}
ListElement le=新的ListElement(数据);
current.next=le;
}

但为什么不使用标准java数据结构来完成该任务呢?

不相关,但“添加”中的注释似乎是错误的(下一步不是空的,而是列表),然后是冗余的(这就是分配不需要注释的内容)。在任何情况下,您都会显式地将列表中的第一个元素设置为新项。如果要将其添加到末尾,请首先转到末尾,并将最后一个项的“下一个”设置为新项。将它们指向正确的方向而不是为它们指定任务是否更有意义?是的,它会。忽略了单词问题中的“类”。另一方面,我的答案肯定不是deque的生产准备解决方案,因此可以认为它指向了正确的方向。这是一个家庭作业,而不是生产代码。你做了他的家庭作业。