如何为Java制作自定义的Pop方法?

我需要针对Java堆栈结构的自定义pop方法。我想删除堆栈中的特殊项目(由我选择)。我有这段代码。如何正确编辑?

private int[] elements;
private int top;
private int max;
Stack(int size)
{
   elements = new int[size];
   top = 0;
   max = size;
}

public int pop()
{
   top--;
   return elements[top];
}
评论
  • 萌了个兔
    萌了个兔 回复
    public int customizedPop(int value)
    {
        Stack temp = new Stack(this.max);
        int popped = 0;
        while (this.top != -1)
        {
            popped = this.pop();
            if (popped != value)
            {
                temp.push(popped);
            } 
        }
    
        while (temp.isEmpty() == false)
            this.push(temp.pop());
    }
    
  • 苍涼
    苍涼 回复

    首先,您需要修复pop()方法。 它应该是:

    如果堆栈只有1个元素,则top = 0,则top--将变成-1,并且您返回的是无法使用的elements [-1]。

    其次,您可以进行自定义的Pop投掷2叠。我假设您知道已经编写了push和isEmpty函数。

    1)将所有元素从堆栈弹出到函数中创建的另一个临时堆栈中 2)您不会在临时堆栈中推送与您的函数的参数匹配的值 3)您将临时堆栈中的所有值弹出到原始堆栈中 4)现在您有了原始堆栈,而没有要弹出的值