栈与队列数组返回错误值问题排查求助
问题原因分析
栈的异常原因
首先来说栈的情况:
- 你的栈实现缺少了入栈前的满栈检查。当你尝试添加第11个元素时,栈的数组容量只有10(索引范围0-9),此时栈已经处于满状态,但代码没有判断这一点,直接尝试往数组的第11个位置(索引10)写入数据——这其实已经触发了数组越界,但可能这个异常没被即时捕获,导致第11个元素根本没被成功存入栈中,所以最终只能输出10个元素。
- 另外,你的栈实现也缺少了出栈前的空栈检查。当你把10个元素全部弹出后,栈已经为空,但代码还在继续执行弹出操作,此时尝试访问数组的负数索引(比如栈顶指针已经变成-1,还去取
array[-1]),这就直接抛出了IndexOutOfBoundsException异常,而且没有被捕获处理。
队列的异常原因
再看队列的问题:
- 你的队列实现完全没有做入队时的满队列检查,虽然你设定了最大容量为10,但代码并没有限制入队的元素数量,导致你可以成功添加11个元素进去,所以最后能输出11个值。
- 而队列本身是**先进先出(FIFO)**的结构,第一个被加入的元素1会最先被取出,所以输出的第一个值是1而不是最后加入的11——这其实是队列的正常特性,但因为你的实现没有遵守容量限制,才出现了超出10个元素的异常情况。
内容的提问来源于stack exchange,提问作者Devin
相关产品推荐
相关产品推荐

