我正在尝试在Java中实现类型为int(E
)的单链接列表堆栈,但是我的pop()
方法存在问题。在此程序中,推和弹出操作必须在此列表的开头完成。
这使我感到困惑,因为不可能有“先前的”方法; “顶部”引用将需要指向列表中的第一项,因此,当将新数据推入列表时,必须将其递减。
代码摘录在这里:
private Node next; // warning occurs here
/** Creates a new node with a null next field.
@param data The data stored
*/
private Node (E data) {
this.data = data;
next = null; // Necessary in C++ but not in Java.
}
/** Creates a new node that references another node.
@param data The data stored
@param next The next node referenced by new node.
*/
private Node (E data, Node<E> next) {
this.data = data;
this.next = next;
}
} //end class Node
private Node<E> top = null;
public E pop () {
E item = top.data;
if (empty())
{
throw new EmptyStackException();
}
else {
item = top.data.next; //error occurs here
return item;
}
}