Java 栈中push(Element)方法的实现

Java 栈中push(Element)方法的实现,java,stack,Java,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) {

我今天在学堆叠。 我试图实现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();
}

当堆栈已经有头时,您的逻辑是错误的。我认为新头必须指向旧头(via.next)

我有点困惑,你是在实现后进先出还是先进先出堆栈

后进先出

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

对于后进先出(LIFO)堆栈,您真的不需要尾部。

后进先出(LIFO)的工作方式很有魅力。谢谢。我不知道尾部部分,谢谢你的更新。:)