【发布时间】: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吗?这对我来说似乎有点奇怪。