在关于递增递减操作符的讨论结束时我们介绍了栈stack 的抽象来说明这些操作符
的前置和后置格式我们将用一个iStack 类即只支持int 型元素的栈的设计与实现的简
要过程来结束本章
栈是计算机科学的一个基本数据抽象它允许以后进先出LIFO 的顺序嵌入和获取
其中的值栈的两个基本操作是向栈中压入push 一个新值以及弹出pop 或获取
最后压入的那个值其他一些操作包括查询栈是否满full()或空empty() 以及判断栈的
长度size()——即包含多少个元素我们的初始实现只支持int 型的元素下面是其公有接
口的声明
#include <vector>
class iStack {
public:
iStack( int capacity )
: _stack( capacity ), _top( 0 ) {}
bool pop( int &value );
bool push( int value );
bool full();
bool empty();
void display();
int size();
private:
int _top;
vector< int > _stack;
};
为了演示递增递减操作符的前置和后置形式的用法我们为iStack 栈选择了固定长度的
实现我们将在第6 章结尾时将其修改为可动态增长的我们把元素存储在一个int 型的
vector 中它的名字为_stack _top 含有下一个可用槽的值push()操作会向该槽压入一个值
_top 的当前值反映了栈中元素的个数同此size()只需简单地返回_top
inline int iStack::size() { return _top; };
如果_top 等于0 则empty()返回true 如果_top 等于_stack.size() 则full()返回true
inline bool iStack::empty() {
return _top ? false : true; }
inline bool iStack::full() {
return _top < _stack.size()-1 ? false : true;
}
——————————————————————————————————
这段程序中有size()的定义:inline int iStack::size() { return _top; };
但是后来的这段代码中用的函数size()不是上面定义的意思吧?????
3 个解决方案
#1
inline bool iStack::full()
{
return _top < _stack.size()-1 ? false : true;
}
这里的size 和上面定义的不是一个意思吧
{
return _top < _stack.size()-1 ? false : true;
}
这里的size 和上面定义的不是一个意思吧
#2
_stack.size() 是STL里vector的接口!
inline int iStack::size() 是iStack类的接口!
细心点!
inline int iStack::size() 是iStack类的接口!
细心点!
#3
非常感谢。
#1
inline bool iStack::full()
{
return _top < _stack.size()-1 ? false : true;
}
这里的size 和上面定义的不是一个意思吧
{
return _top < _stack.size()-1 ? false : true;
}
这里的size 和上面定义的不是一个意思吧
#2
_stack.size() 是STL里vector的接口!
inline int iStack::size() 是iStack类的接口!
细心点!
inline int iStack::size() 是iStack类的接口!
细心点!
#3
非常感谢。