我正在学习Java中的LinkedLists和堆栈,并遇到了一个问题。目前我有一个push函数,它将一个对象放在堆栈的顶部。我试图计算如何做相反的事情并将对象推到底部,而不会丢失列表中的链接。
为了帮助您更好地理解我的问题,这里有一些部分。
对象构造函数:
//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
插入最后一项(非工作代码)已编辑
public void insertLast(int i,String dest,String airl,String airc,double t) {//建立新链接 飞机newPlane =新飞机(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将插入元素,它最好是列表的底部而不是顶部,所以我可以修改我的推送使用队列。
修改 原来最好为此使用队列。
答案 0 :(得分:2)
这里有singly linked list。如果要将项目插入此列表的末尾,则必须完全向下,到列表中的最后一项,并将新Plane指定给其next
引用。列表中的最后一项是next
引用为null
的项目
或者,作为另一种变体,您可以保留两个链接 - 一个用于列表中的第一个项目,另一个用于最后一个项目。这样,当你需要在列表的末尾添加一些内容时,你不需要一直向下。它将是double-ended list(不要将它与双链表混合,这是另一种数据结构)。
答案 1 :(得分:0)
当你学习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
}
你需要做的是从第一个元素开始,不断获取.next
直到它为空,然后在列表末尾添加对新对象的引用。