链接列表堆栈,推到底部而不是顶部

时间:2013-11-01 12:07:35

标签: java linked-list stack

我正在学习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将插入元素,它最好是列表的底部而不是顶部,所以我可以修改我的推送使用队列。

修改 原来最好为此使用队列。

2 个答案:

答案 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直到它为空,然后在列表末尾添加对新对象的引用。