Java 返回堆栈中的顶部元素
我正在努力使用top()方法,该方法应该检索堆栈的top元素,如果堆栈为空,则返回null并返回堆栈的top元素。如何修复循环Java 返回堆栈中的顶部元素,java,indexing,methods,linked-list,Java,Indexing,Methods,Linked List,我正在努力使用top()方法,该方法应该检索堆栈的top元素,如果堆栈为空,则返回null并返回堆栈的top元素。如何修复循环 public class Stack<E> implements IStack<E> { Node head; public E top() { if (head == null) return null; Node<E> tempNode = head;
public class Stack<E> implements IStack<E> {
Node head;
public E top() {
if (head == null)
return null;
Node<E> tempNode = head;
for (int i = 0; i < size; i++) {
if (tempNode.getmNextNode() == null) {
tempNode.getmElement();
}
tempNode = tempNode.getmNextNode();
}
return tempNode.getmElement();
}
}
公共类堆栈实现IStack{
节点头;
公共E top(){
if(head==null)
返回null;
节点tempNode=头;
对于(int i=0;i
我的节点类:
public class Node<E> {
private E mElement;
private Node<E> mNextNode;
Node(E data) {
this.setmElement(data);
}
public E getmElement() {
return this.mElement;
}
public void setmElement(E element) {
this.mElement = element;
}
public Node<E> getmNextNode() {
return this.mNextNode;
}
public void setmNextNode(Node<E> node) {
this.mNextNode = node;
}
}
公共类节点{
私人电子融合;
私有节点mNextNode;
节点(E数据){
此设置(数据);
}
公共E getmElement(){
把这个还给我;
}
公共无效设置(E元素){
此.mElement=元素;
}
公共节点getmNextNode(){
返回此.mNextNode;
}
public void setmNextNode(节点节点){
this.mNextNode=节点;
}
}
您的top()
方法应该将最后一个推入的元素返回堆栈,而不是第一个。推送新元素时,标题
引用此元素。因此,head
是顶部元素,然后由您的方法返回
public class Stack<E> implements IStack<E>{
public E top() {
if(head==null){
throw new StackEmptyException();
}
return head.getmElement();
}
}
公共类堆栈实现IStack{
公共E top(){
if(head==null){
抛出新的StackEmptyException();
}
返回head.getmElement();
}
}
您的top()
方法应该将最后一个推入的元素返回堆栈,而不是第一个。推送新元素时,标题
引用此元素。因此,head
是顶部元素,然后由您的方法返回
public class Stack<E> implements IStack<E>{
public E top() {
if(head==null){
throw new StackEmptyException();
}
return head.getmElement();
}
}
公共类堆栈实现IStack{
公共E top(){
if(head==null){
抛出新的StackEmptyException();
}
返回head.getmElement();
}
}
public E top(){
if(head==null)
返回null;
节点tempNode=头;
while(tempNode.getmNextNode()!=null){
tempNode=tempNode.getmNextNode();
}
返回tempNode.getmElement();
}
public E top(){
if(head==null)
返回null;
节点tempNode=头;
while(tempNode.getmNextNode()!=null){
tempNode=tempNode.getmNextNode();
}
返回tempNode.getmElement();
}
您究竟面临哪些错误?这是你的全部代码吗?“头”和“大小”在哪里定义?头不是堆栈的顶部吗?若否,原因为何?为什么您需要跟踪堆栈的底部?可能应该包括您的推送
代码,以向我们提供有关您的实现的提示-但很可能您只需要返回头
。您到底面临哪些错误?这是你的全部代码吗?“头”和“大小”在哪里定义?头不是堆栈的顶部吗?若否,原因为何?为什么需要跟踪堆栈的底部?可能应该包括推送
代码,以向我们提供有关实现的提示-但最有可能的是,您只需要返回头
。谢谢,我尝试了它,但得到了所需的错误类型:E表示返回头。getmElement()这不应该给您这样的错误。您的程序中的其他地方有问题。发布完整的代码以获得进一步的帮助;所以现在它没有给我这个错误。我猜head是堆栈的底部,因为它返回元素0@Natalie_94-我刚刚更新了我的答案。我希望,它现在对您有效。谢谢,我尝试了它,但得到了错误要求的类型:E代表返回头。getmElement()这不应该给您这样的错误。您的程序中的其他地方有问题。发布完整的代码以获得进一步的帮助;所以现在它没有给我这个错误。我猜head是堆栈的底部,因为它返回元素0@Natalie_94-我刚刚更新了我的答案。我希望,它现在对你有用。