我今天正在学习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();
}
答案 0 :(得分:0)
当堆栈已经有一个头时你的逻辑错了。我认为新头必须指向旧头(通过.next)。
我有点困惑,你是在实现LIFO还是FIFO堆栈?
对于LIFO
else {
Node node = new Node(custPair, null);
node.next = head;
head = node;
size++;
}
对于LIFO堆栈,你真的不需要尾巴。