📄 stack.h
字号:
// Stack.h: interface for the Stack class.
//
//////////////////////////////////////////////////////////////////////
#ifndef STACKT
#define STACKT
#define STACK_CAPACITY 100
template<typename StackElement>
class Stack
{
public:
Stack();
virtual ~Stack();
bool empty()const;
void push(const StackElement& value);
void top(StackElement&);
void pop(StackElement&);
void growStack();
private:
StackElement* stkArray;//[STACK_CAPACITY];
int stkTop;
int stk_nSize;
};
template <typename StackElement>
Stack<StackElement>::Stack()
{
stkTop = -1;
stk_nSize = 50;
stkArray = new StackElement[stk_nSize];
}
template <typename StackElement>
Stack<StackElement>::~Stack()
{
delete []stkArray;
}
template <typename StackElement>
inline bool Stack<StackElement>::empty() const{return (stkTop == -1);}
template <typename StackElement>
void Stack<StackElement>::push(const StackElement& value)
{
if(stkTop</*STACK_CAPACITY -1*/stk_nSize-1)
{
++stkTop;
stkArray[stkTop] = value;
}
else
{
growStack();
++stkTop;
stkArray[stkTop] =value;
}
}
template <typename StackElement>
void Stack<StackElement>::growStack()
{
StackElement* pOldStk = stkArray;
stkArray = new StackElement[2*stk_nSize];
for(int nIndex =0; nIndex<stk_nSize;++nIndex)
stkArray[nIndex] = pOldStk[nIndex];
delete []pOldStk;
stk_nSize = stk_nSize*2;
}
template <typename StackElement>
void Stack<StackElement>::top(StackElement& seTop)
{
if(stkTop >= 0)
seTop = stkArray[stkTop];
}
template <typename StackElement>
void Stack<StackElement>::pop(StackElement& seItem)
{
top(seItem);
if(stkTop >= 0)
--stkTop;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -