Java 返回堆栈中的顶部元素

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;

我正在努力使用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;

        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-我刚刚更新了我的答案。我希望,它现在对你有用。