【问题标题】:Place top of stack at end of linked chain instead of beginning将堆栈顶部放置在链接链的末尾而不是开头
【发布时间】:2021-06-01 11:49:22
【问题描述】:
我正在解决一个问题:使用链接链创建堆栈,将新条目(堆栈顶部)放置在链的末尾,而不是开头。解决方案的一部分涉及维护对第一个和最后一个节点以及倒数第二个节点的引用。另外,我无法遍历链条。我想不出解决方案,因为当顶部条目从堆栈中弹出时,我想不出一种方法来更新对倒数第二个节点的引用?
(这是一道教科书题。链的开头包含对下一个节点的引用。链的结尾对下一个节点的引用为空)
【问题讨论】:
标签:
java
linked-list
stack
【解决方案1】:
开始和结束是抽象的术语。只需初始化一个节点以包含第一个元素。类似于以下内容:
Node tail = null;
..
..
然后添加一个新节点。
public void push(T val) {
Node = new Node(val);
Node.next = tail;
tail = node;
}
您将它添加到tail,然后新的node 变为tail。然后,当您遍历它时,您只需从尾部开始并使用 next 引用向头部移动。
弹出堆栈。
public T pop() {
if (tail != null) {
object = tail.object;
tail = tail.next;
}
return null;
}
您将需要创建一个通用类节点。你可能想要一个isEmpty() 方法。