数组栈

栈为先入后出,从栈顶取出元素,插入元素:
c++实现栈:
template
class MyStack{
public:void Push(const T &item);
void Pop();
bool IsEmpty() const;
T& Top();
MyStack(int stackCapacity = 5);
~MyStack();
private:
T *stack;
int top;
int capacity;
};

template
MyStack::MyStack(int stackCapacity):capacity(stackCapacity){
if(capacity <0) throw “stack > = 0”;
stack = new T[capacity];
top = -1;
}

template
MyStack::~MyStack(){
delete [] stack;
}

template
void MyStack::Push(const T &item){
if(top == capacity -1){
addCapacity(stack,capacity,2*capacity);
capacity *= 2;
}
stack[++top] = item;
}
template
bool MyStack::IsEmpty() const{
return -1 == top;
}

template
void MyStack::Pop(){
if(IsEmpty())throw “stack is Empty”;
stack[top–].~T();
}

template
T& MyStack::Top() const{
if(IsEmpty())throw “stack is Empty”;
return stack[top];
}

template
void addCapacity(T* &stack, const int oldSize, const int newSize){
if(newSize <1) throw “stack should >0”;
T *newStack = new T[newSize];
int newCapacity = std::min(oldSize, newSize);
std::copy(stack, stack+ newCacpacity,newStack);
delete [] stack;
stack = newStack;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值