Java 链表堆栈,按到底部而不是顶部
我正在学习java中的LinkedList和Stack,遇到了一个问题。目前我有一个push函数,它将一个对象放在堆栈的顶部。我正试图找出如何做相反的事情,将一个对象推到底部,而不丢失列表中的链接 为了帮助你更好地理解我的问题,这里有一些部分 对象构造函数:Java 链表堆栈,按到底部而不是顶部,java,linked-list,stack,Java,Linked List,Stack,我正在学习java中的LinkedList和Stack,遇到了一个问题。目前我有一个push函数,它将一个对象放在堆栈的顶部。我正试图找出如何做相反的事情,将一个对象推到底部,而不丢失列表中的链接 为了帮助你更好地理解我的问题,这里有一些部分 对象构造函数: //Variables public int planeID; //unique plane identifier public String destination; //destination public Stri
//Variables
public int planeID; //unique plane identifier
public String destination; //destination
public String airline; //airline name
public String aircraft; //aircraft type
public double time; //arrival or departure time
public Plane next; //next plane in terminal
// Plane Constructor
public Plane (int i, String dest, String airl, String airc, double t) {
planeID = i;
destination = dest;
airline = airl;
aircraft = airc;
time = t;
}// END Plane Constructor
插入最后编辑的项目(非工作代码)
公共无效插入最后一个(int i、字符串目标、字符串airl、字符串airc、双t)
{//创建新链接
新飞机=新飞机(i、dest、airl、airc、t);
平面温度=第一
while (temp.next != null) {
temp = temp.next;
}
temp.next = newPlane;
}
最后是推送,列表指的是我的LinkedList:
public void push(int i, String dest, String airl, String airc, double t) // put item on top of stack
{
theList.insertLast(i, dest, airl, airc, t);
}
所以,现在我正在尝试创建一个新函数,比如insertLast,它将插入元素,最好是在列表的底部,而不是顶部,这样我就可以为此修改推送使用队列
编辑:
事实证明,最好使用队列进行此操作。这里的是。如果要将项目插入此列表的末尾,则必须一直向下,直到列表中的最后一个项目,并将新平面指定给其下一个引用。列表中的最后一个项目是下一个引用为空的项目ode>
或者,作为另一种变体,您可以保留两个链接—一个用于列表中的第一项,另一个用于最后一项。这样,当您需要在列表末尾添加某些内容时,您就不需要一直向下。它将是(不要将它与双链接列表混合,这是另一种数据结构).您在这里拥有的是。如果您想将项目插入到此列表的末尾,那么您必须一直向下,到列表中的最后一个项目,并为其下一个引用指定新的平面。列表中的最后一个项目是下一个引用为空的项目
或者,作为另一种变体,您可以保留两个链接—一个用于列表中的第一项,另一个用于最后一项。这样,当您需要在列表末尾添加某些内容时,您就不需要一直向下。它将是(不要将它与双链接列表混合,这是另一种数据结构).您在这里拥有的是。如果您想将项目插入到此列表的末尾,那么您必须一直向下,到列表中的最后一个项目,并为其下一个引用指定新的平面。列表中的最后一个项目是下一个引用为空的项目
或者,作为另一种变体,您可以保留两个链接—一个用于列表中的第一项,另一个用于最后一项。这样,当您需要在列表末尾添加某些内容时,您就不需要一直向下。它将是(不要将它与双链接列表混合,这是另一种数据结构).您在这里拥有的是。如果您想将项目插入到此列表的末尾,那么您必须一直向下,到列表中的最后一个项目,并为其下一个引用指定新的平面。列表中的最后一个项目是下一个引用为空的项目
或者,作为另一种变体,您可以保留两个链接—一个用于列表中的第一项,另一个用于最后一项。这样,当您需要在列表末尾添加某些内容时,您就不需要一直向下。它将是(不要将它与双链接列表混合,这是另一种数据结构).在您学习Java时,我不会只给您代码,所以我编写了一些伪代码
function insertLast(item) {
tmp = first
while (tmp.next != null) {
tmp = tmp.next
}
// now we're at the bottom
tmp.next = item
item.next = null
}
您需要做的是从第一个元素开始,不断获取。下一个,直到它为空,然后在列表的末尾添加对新对象的引用。当您学习Java时,我不会只给您代码,所以我编写了一些伪代码
function insertLast(item) {
tmp = first
while (tmp.next != null) {
tmp = tmp.next
}
// now we're at the bottom
tmp.next = item
item.next = null
}
您需要做的是从第一个元素开始,不断获取。下一个,直到它为空,然后在列表的末尾添加对新对象的引用。当您学习Java时,我不会只给您代码,所以我编写了一些伪代码
function insertLast(item) {
tmp = first
while (tmp.next != null) {
tmp = tmp.next
}
// now we're at the bottom
tmp.next = item
item.next = null
}
您需要做的是从第一个元素开始,不断获取。下一个,直到它为空,然后在列表的末尾添加对新对象的引用。当您学习Java时,我不会只给您代码,所以我编写了一些伪代码
function insertLast(item) {
tmp = first
while (tmp.next != null) {
tmp = tmp.next
}
// now we're at the bottom
tmp.next = item
item.next = null
}
您需要做的是从第一个元素开始,不断获取。下一个,直到它为null,然后在列表末尾添加对新对象的引用。我认为,他需要检查节点是否有引用(这不是null),如果没有:存在最后一个节点,因此您需要将最后一个节点引用到新节点。@Ernusc是的,这就是您查找最后一个元素的方式-它的next
引用为空。@aga我在阅读了您提供的源代码后修改了我的问题并包含了我提出的代码,但是它仍然不起作用,我真的不明白为什么。我认为,他需要检查节点是否有引用(这不是null),如果没有:存在最后一个节点,因此您需要将最后一个节点引用到新节点。@Ernusc是的,这就是您查找最后一个元素的方式-它的next
引用为空。@aga我在阅读了您提供的源代码后修改了我的问题并包含了我提出的代码,但是它仍然不起作用,我真的不明白为什么。我认为,他需要检查节点是否有引用(这不是null),如果没有:存在最后一个节点,因此您需要将最后一个节点引用到新节点。@Ernusc是的,这就是您查找最后一个元素的方式-它的next
引用为空。@aga我在阅读了您提供的源代码后修改了我的问题并包含了我提出的代码,但是它仍然不起作用,我真的不明白为什么。我认为,他需要检查节点是否有引用(这不是空的),如果没有:有最后一个节点,所以您需要将您的最后一个节点引用到yo