Как реализовать методы push-pop-peek для обратного массива? - PullRequest
0 голосов
/ 16 июня 2019

Создайте класс с именем inverse_Stack, где наш «стек» организован таким образом, что первый / «нижний» элемент расположен по индексу (-1).Каждый помещенный элемент помещается в слот массива перед элементом [current] самый верхний.if (size = 0) хранить в индексе: (длина -1);if (size = 1), хранить по индексу: (длина -2); if (size = 2), хранить по индексу: (length-3);

Это все, что у меня пока есть.Потерял с помощью методов push-pop-peek для обратного стека.Я знаю, как заставить их работать на обычный стек

public class Inverse_Stack<T> implements StackADT<T>{

private T[] stack; 
private int top;
//private int bot;

public Inverse_Stack(){

 this(100);

}

public Inverse_Stack(int capacity){

 top = 0; 

 stack = (T[] new Object[capacity];

} 

public int size(){
 //returns size of array
 return stack.length;

}

public void push(T element){
    //fill in code
}

 private void expandCapacity(){

T[] newStack = (T[] new Object[stack.length*2];

for(int i = 0; i < stack.length;i++)

newStack[i] = stack[i];

stack = newStack;
}

public T pop(){

if(isEmpty())

throw new RuntimeException("Empty Stack");

//fill in code

}

public T peek(){

if(isEmpty())

throw new RuntimeException("Empty Stack");

 //fill in code

 }

Ответы [ 2 ]

0 голосов
/ 21 июля 2019

Разве ArrayDeque не делает именно то, что вы хотите?

public class InverseStack<T> extends ArrayDeque<T> {
…
}

и toArray( T[] a ) получат Ваш обратный массив

0 голосов
/ 19 июня 2019

length сообщает вам емкость: количество предметов, которое может вместить стек. Вам также необходимо сохранить переменную count, чтобы вы знали, сколько элементов в данный момент находится в стеке.

Я не буду писать код Java, но могу дать вам общее представление:

В вашем конструкторе установите count на 0.

isEmpty возвращает true, если count больше 0.

push
    if the stack is full, expand the capacity
    add element at stack[count]
    increment count

pop
    if the stack is empty, throw empty stack exception
    decrement count
    return the value at stack[count]

peek похоже на pop, но вы на самом деле не уменьшаете count.

...