Java Stack - 如何从堆栈中弹出()和推送()多个元素?
Posted
技术标签:
【中文标题】Java Stack - 如何从堆栈中弹出()和推送()多个元素?【英文标题】:Java Stack - How do I pop() and push() multiple elements from a stack? 【发布时间】:2021-12-14 04:05:08 【问题描述】:我已经有一个堆栈类在工作,但现在我每次只能弹出和推送 1 个元素,我希望能够同时推送和弹出多个元素。无需多次使用 push 和 pop 。我正在尝试创建 2 个函数来做到这一点。函数 pushAll 和 popN。喜欢:
public void pushAll (Object all[]) throws StackFullException ...
public Object [] popN (int n) throws StackEmptyException ...
备注:输入参数all是一个数组,包含所有必须输入的元素。堆叠后向量的最后一个元素必须在顶部。 如果没有空间插入所有元素,则必须不插入任何元素,并且必须引发 StackFullException 异常。 popN 方法弹出由 n 参数指定的元素数量,并将它们存放到一个数组中以供返回。 如果堆栈没有请求的元素数量,则没有元素被取消堆栈并且抛出 StackEmptyException 异常。 我正在尝试几个小时来工作我的逻辑但没有成功。 到目前为止,这是我的 Stack 课程:
public class Stack extends RuntimeException
public static final int CAPACITY = 1000;
private int capacity;
private Object elements[];
private int top = -1;
public Stack(int capacity)
if (capacity>0)
this.capacity=capacity;
elements=new Object[capacity];
else
this.capacity = CAPACITY;
elements = new Object[CAPACITY];
public Stack()
this(CAPACITY);
public boolean isEmpty()
return (top < 0);
public boolean isFull()
return (top == capacity - 1);
public void push(Object o) throws StackFullException
if (isFull())
throw new StackFullException("Stack Overflow!");
else
top++;
elements[top] = o;
public Object pop() throws StackEmptyException
Object elem;
if (isEmpty())
throw new StackEmptyException("Stack Underflow!");
else
elem = elements[top];
elements[top] = null;
top--;
return (elem);
public Object top() throws StackEmptyException
if (isEmpty())
throw new StackEmptyException("Stack Underflow!");
else
return (elements[top]);
public int size()
return (top + 1);
;
public Object[] getElements()
return elements;
@Override
public String toString()
String string = "[";
for (int i = 0; i < this.capacity; i++)
Object element = this.elements[i];
if(element != null)
string += element + ",";
string = string.substring(0, string.length() - 1);
string += "]";
return string;
public void pushAll (Object all[]) throws StackFullException
public Object [] popN (int n) throws StackEmptyException
可以帮我构建 pushAll 和 popN 函数吗?
【问题讨论】:
我建议你展示你尝试过的东西。 不可能。计算机按顺序或并行运行,但随后您会遇到竞争条件以及其他奇怪的问题。我什至不认为在量子计算机中这是可能的,但我又对此不太了解。 你真的是想写Stack extends RuntimeException
吗?这对我来说似乎有点奇怪。
【参考方案1】:
没有这样的方法。您一次只能推送和弹出一个元素。您可以做的是创建一个方法,传递您要弹出或推送的元素的堆栈和数量,并使用循环实现它。
【讨论】:
以上是关于Java Stack - 如何从堆栈中弹出()和推送()多个元素?的主要内容,如果未能解决你的问题,请参考以下文章