Вернуть верхний элемент в стек - PullRequest
0 голосов
/ 22 февраля 2020

Я борюсь с методом top (), который должен получить верхний элемент стека или вернуть ноль, если этот стек пуст, и вернуть верхний элемент стека. Как можно исправить l oop?

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();
    }
}

Мой класс Node:

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;
    }
}

Ответы [ 2 ]

0 голосов
/ 23 февраля 2020
public E top() {
    if (head == null)
        return null;
    Node<E> tempNode = head;
    while(tempNode.getmNextNode()!=null) {
        tempNode = tempNode.getmNextNode();
    }
    return tempNode.getmElement();
}
0 голосов
/ 23 февраля 2020

Ваш метод top() должен возвращать последний помещенный элемент в стек, а не первый. При нажатии на новый элемент, head ссылается на этот элемент. Таким образом, head является верхним элементом и затем будет возвращен вашим методом.

public class Stack<E> implements IStack<E>{

    public E top() {
    if(head==null){
    throw new StackEmptyException();
     }
    return head.getmElement();
     }
}
...