如何从堆栈实现中删除(弹出)元素?

How to remove(pop) element from a stack implementation?

目前正在做我的家庭作业,一个在动态数组的支持下制作堆栈的模拟代码。 方法 pop() 不起作用,因为它是函数,我写了一些代码,但我需要完成。我的堆栈应该是这样模拟的,你插入一个数字来调用 top 然后删除那个数字(top)。

import java.util.NoSuchElementException;

public class MyStack implements IntStack {

    int[] heltal;

    public MyStack() {
        heltal = new int[0];
    }

    public void push(int tal) {

        int[] temp = new int[heltal.length + 1];

        for (int x = 0; x < heltal.length; x++) {
            temp[x] = heltal[x] + tal;

        }
        heltal = temp;

        for (int i = 0; i < heltal.length; i++) {
            heltal[i] = tal;
        }

    }

    @Override
    public int pop() {
        if (Isempty()) {
            throw new NoSuchElementException("The stack is empty, there is nothing to pop");

        } else {

            int[] temp = new int[heltal.length - 1];

            for (int x = 0; x < heltal.length - 1; x++) {
                temp[x] = heltal[x];

            }

            int etttal = heltal[0];


            heltal = temp;
            return etttal;
        }
    }

    @Override
    public int peek() {
        if (Isempty()) {
            throw new NoSuchElementException("The stack is empty");
        } else {
            return heltal[0];
        }

    }

    public boolean Isempty() {
        return heltal.length == 0;

    }
}

您似乎使这比要求的更困难。对于堆栈实现,pushpoppeek 等只不过是 return 或存储值的索引操纵器。堆栈可以由数组或列表支持。 pushing 等是抽象术语。所以当你压入一个值时,你不需要一个一个地复制所有的东西。只需将它添加到数据结构的末尾即可。

  • pop - 检查索引,如果有效,return 当前索引处的元素,更新索引。
  • push - 将值存储在下一个位置。可能是 index + 1 但这取决于你如何实现它。
  • 查看 - return 最高值(在索引处)但不更新索引。

如果您使用数组,则需要添加方法来增加它的容量。

有关详细信息,请查看 Stack

这是一个简单的推送方法,由一个名为 stackarray 和一个 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;
}