我是JAVA n00b。我正试图在Java中实现一个堆栈数据结构。 push,peek和display的算法工作正常。该pop
算法不按预期工作:堆栈实现的弹出操作未按预期工作
public int pop() {
int temp;
if(isEmpty())
return -1;
else {
temp = arr[topElem];
topElem--; // points to the top most element in the stack
count--; // keeps track of the total number of elements in the stack
return temp;
}
}
的case
在switch
声明此算法如下: -
case 2:
if(st.pop()==-1)
System.out.println("The stack is empty.");
else
System.out.printf("The element popped is %d\n",st.pop());
break;
如果输入的元素是(按顺序): - 1 2 4 然后在第一次调用pop
时,弹出2,然后只有1保留在堆栈中。我能够理解什么可能是错误的,但无法在代码中找到它。
返回'-1'指示堆栈为空不是好主意,如果要将int'-1'放在堆栈上怎么办?在一个空栈上调用'pop()'更好地抛出Exception。 – MrSmith42
你叫两次弹出! –