Как создать универсальный метод pop стека в Java - PullRequest
0 голосов
/ 11 марта 2019

В настоящее время я работаю над проектом стека, в котором я создаю общий класс стека.Я искал переполнение стека для этого, но не смог найти его.Мне нужна помощь в создании метода pop в моем коде.

Вот что у меня есть:

public class Stack<E>
{
public static final int DEFAULT_CAPACITY = 10;
private E [] elementData;
private int size;

@SuppressWarnings("unchecked")
public Stack()
{
    this.elementData = (E[]) new Object[DEFAULT_CAPACITY];
}
@SuppressWarnings("unchecked")
public Stack(int capacity)
{
    if(capacity < 0)
    {
        throw new IllegalArgumentException("capacity " + capacity);
    }
    this.elementData = (E[]) new Object[capacity];
}
public boolean isEmpty()
{
    if(size == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
/*
The push method should add its parameter to the top of the stack.
*/
public void push(E item)
{
    ensureCapacity(size+1);
    elementData[size] = item;
    size++;
}
private void ensureCapacity(int capacity)
    {
    if(elementData.length < capacity)
    {
        int newCapacity = elementData.length * 2 + 1;
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
}

Мне нужна помощь прямо здесь.Мне нужно иметь метод pop удалить и вернуть элемент в верхней части стека.Если элементы отсутствуют, следует выдать исключение EmptyStackException.

    public E pop()
    {
    if(isEmpty())
    {
        throw EmptyStackException
    }
    else
    {

    }
}
}

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Я понял, я отдаю должное @ScaryWombat. Код:

public E pop()
{
    if(isEmpty())
    {
        throw new EmptyStackException();
    }
    else
        {
            return elementData[--size];
    }

}
0 голосов
/ 11 марта 2019
public E pop()
 {
    E item;

    if(isEmpty())
    {
        throw new EmptyStackException();
    }
    else
    {
        item = elementData[size];
        size--;
    }
    return item;
}

Вам нужно сделать вашу возвращаемую переменную равной вершине массива стека, а затем уменьшить ваш массив стека. Также вам нужно инициализировать свой стек, установив size = 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...