缺点是需要事先声明数组的大小。
但是不会浪费太多的空间,因为栈操作总是频繁的push和pop,任一时刻栈元素的数量不会太大。
错误检测分析
我们发现,在实现栈的时候,无论是数组实现还是链表实现,都需要许多的错误检测。比如对空栈的pop和对满栈的push,这些检测需要花费和栈操作差不多的时间。
- 一种错误的观点
所以,有些时候,除去错误处理及其重要的场合(操作系统等),错误检测有时省略不写。
有时候可以刻意避免错误场合的出现
- 导致的问题
但是这会导致一些问题,比如在多人协作的场合。
- 建议
可以这样考虑,程序运行的主要时间不会在这些例程上(因为花费常数时间),
这时候,错误检测的省略是不妥的。
如果真的耗费太长时间,可以直接注释掉。(但是一定要写出来)
代码实现
栈的数组实现.cpp
代码很潦草,但是可以运行。
dummy parameters介绍
在c语言中,一个函数可以被其他的函数所运用(在c++的类中函数则不能被其他类函数所运用),故而如果同时实现数组栈和链表栈,会导致 push等函数不知道对哪个进行了操作(函数重载的情况下,参数数目一致但是类型不一致)。
- 这个时候可以添加 dummy parameters
但是又会导致程序的效率下降,这就是效率和软件理想主义的矛盾。
What does “dummy argument” mean?