У меня есть вопрос относительно программы, которая стимулирует стек (без использования каких-либо встроенных функций стека или чего-либо подобного).
stack2= 1 2 3 4 5 //single dimension array of 5 elements
При вызове метода pop
стек должен выглядеть следующим образом, в основном, удаляя элемент каждый раз, когда стек вызывается снова.
stack2= 1 2 3 4 0
stack2= 1 2 3 0 0
stack2= 1 2 0 0 0
stack2= 1 0 0 0 0
stack2= 0 0 0 0 0
Вот мой код:
for (int i = 1; i <= 6; i++)
{
number= TryPop(s2);
//use number
ShowStack(s2, "s2");
}
public void Push(int g)
{
if (top == Max)
{
throw new Exception("Stack overflow...");
}
else
{
tabel[top] = g;
top++;
}
}/*Push*/
У меня уже есть код, который заполняет мой массив значениями (с помощью метода push). Метод pop должен взять последнее значение и поместить его в 0, затем вызвать следующий стек и поместить следующий в 0 (как показано выше в stack2).
Текущий метод pop, который отслеживает верхний индекс (0 элементов = 0 верхний, 1 элемент = 1 верхний и т. Д.), Уже включает предупреждение о недостаточном значении, если оно продолжается 0 или ниже (что правильно).
public int Pop()
{
if(top <= 0)
{
throw new Exception("Stack underflow...");
}
else
{
for (int j = tabel.Length - 1; j >= 0; j--)
{
//...Really not sure what to do here.
}
}
return number;
}/*Pop*/
Так как в другом классе у меня уже есть цикл (цикл for
, показанный выше), который в 6 раз имитирует стек s2. (первый стек: 1 2 3 4 0, второй стек 1 2 3 0 0 и т. д.)
Как именно я снимаю элемент каждый раз? Либо у меня весь дисплей на 0, либо на 0 в неправильных местах / нет индекса ошибок.
Редактировать: Рабочий метод Pop:
public int Pop()
{
if(top <= 0)
{
throw new Exception("Stack underflow...");
}
top--;
tabel[top] = 0;
number = tabel[top];
return number;
}/*Pop*/