Вы, кажется, делаете это более трудным, чем требуется. Для реализации стека push
, pop
, peek
и другие являются не более чем манипуляторами индекса, которые возвращают или сохраняют значение. Стек может быть поддержан массивом или списком. И pushing
и др. Являются абстрактными терминами. Поэтому, когда вы получаете sh значение, вам не нужно копировать все на единицу. Просто добавьте его в конец вашей структуры данных.
- pop - проверьте индекс и, если он действительный, верните элемент с текущим индексом, обновите индекс.
- pu sh - сохранить значение в следующем месте. Вероятно, индекс + 1, но это зависит от того, как вы это реализуете.
- peek - вернуть верхнее значение (по индексу), но не обновлять индекс.
Если вы используете массив, вам нужно добавить метод (ы) в увеличить его емкость.
Для получения дополнительной информации, посмотрите Stack
Вот простой метод pu sh, подкрепленный array
, называемым stack
и index
поле. Предполагается, что используется ints
.
public void push(int v) {
if (index == stack.length-1) {
// no more room, increase array size
// while retaining current values.
}
stack[++index] = v;
}