原讨论

本讨论提供了对原讨论中以下情况的一种解释:

  1. 对空栈执行pop不会RE,且执行pop前empty函数返回true,执行pop后empty函数返回false
  2. 对空栈执行top会RE

猜测: pop函数只会操作指向栈顶的指针,不会访问栈顶元素,所以不会RE。

empty函数通过判断当前指向栈顶的指针是否等于默认值来判断栈是否为空。因为对空栈执行pop后,指向栈顶的指针已经更改了,所以就返回了false。

而top函数会访问栈顶元素,如果是空栈会导致RE。

阅读更多

1 comments

  • 1