Stack中的push(Element)方法实现

时间:2014-04-27 03:21:42

标签: java stack

我今天正在学习Stack。 我正在尝试实现push(Element)方法,但由于某些原因它无法正常工作。

我在我的堆栈中添加了10个项目,然后使用toString方法打印。打印的唯一项目是我最顶级的元素。 非常感谢您的帮助!

private Node head = null;
private Node tail = null;
private static int size;

public void push(Customer custPair)
{
    if (head == null)
    {
        head = new Node(custPair, null);
        tail = head;
        size++;
    } else
    {
        tail.next = head;
        head = new Node(custPair, null);
        size++;
    }

}

@Override
public String toString()
{
    StringBuilder sBuilder = new StringBuilder();

    // Walk down the list and append all values
    Node curNode = head;
    while (curNode != null)
    {
        sBuilder.append(curNode.value.toString()).append("\n");
        curNode = curNode.next;
    }
    return sBuilder.toString();
}

1 个答案:

答案 0 :(得分:0)

当堆栈已经有一个头时你的逻辑错了。我认为新头必须指向旧头(通过.next)。

我有点困惑,你是在实现LIFO还是FIFO堆栈?

对于LIFO

else {
    Node node = new Node(custPair, null);
    node.next = head;
    head = node;
    size++;
}

对于LIFO堆栈,你真的不需要尾巴。