用c++基于模板实现的一个可设置容量的栈(Stack)

介绍

  • 该程序是在c++14标准下编写的,目测c++11和17都是可以使用的
  • 使用的是clion+mingw编译通过

栈的介绍

  • 只能在栈顶插入和删除的一种数据结构
  • 满足后进先出的原则,所以适用于这种场景

具体实现介绍

  • 使用数组保存栈内容
  • 由于使用模板,改栈可以保存多种类型的数据
  • 基本操作是入栈和出栈

源码

  • 代码也在vs2008上编译通过,不过要在main函数中,return 0这行前一行加上:system(“pause”); 让控制台停留
#include <iostream>
template <class T>
class Stack
{
public:
    Stack(int);
    ~Stack();
    void push(T);
    T pop();
    int size();

private:
    void init(int);

private:
    int top;//栈顶
    int max_size;
    T* arry;
};
template <class  T>  Stack<T>::Stack(int stack_size) {
    init(stack_size);
}

template <class T> Stack<T>::~Stack() {
    delete []arry;
}

template <class T> void Stack<T>::push(T t) {
    if(top>=max_size)
    {
        std::cout<<"stack is overflow!"<<std::endl;
        return;
    }
    arry[top++] = t;

}

template <class T> T Stack<T>::pop() {
    if(top==0)
    {
        std::cout<<"Stack is empty! can't pop!"<<std::endl;
    }
    T t = arry[top-1];
    --top;
    return t;
}

template <class T> int Stack<T>::size() {
    return top;
}
template <class  T>  void Stack<T>::init(int stack_size) {
    if(stack_size<=0)
    {
        std::cout<<"Init failed!"<<std::endl;
        return;
    }
    top = 0;
    max_size = stack_size;
    arry = new T[stack_size];
}


int main() {
    Stack<int> s(10);
    s.push(1);
    s.push(2);
    std::cout<<"deleted elem:"<<s.pop()<<std::endl;
    std::cout<<"stack size:"<<s.size()<<std::endl;
    return 0;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值