c++ template 栈的实现

模版栈的头文件
感觉还是可以的


#include <cstdio>
#include <iostream>
using namespace std;
#pragma once
template <typename T>
class STACK {
    public:
        STACK(int capacity);
        ~STACK();
        bool IsEmpty();
        bool IsFull();
        bool Push(T data);
        bool Pop(T* pointer);
        T GetTop();
        bool Clear(); 
    private:
        T* m_pointer;
        int top;
        int m_capacity;
};
template <typename T>
STACK<T>::STACK(int capacity) {
    this->top=-1;
    m_pointer = new T [capacity];
    m_capacity=capacity;
}
template <typename T>
bool STACK<T>::Clear() {
    this->top=-1;
}
template <typename T>
STACK<T>::~STACK() {
    this->Clear();
    delete [] m_pointer;
}
template <typename T>
bool STACK<T>::IsEmpty() {
    if(this->top==-1)
        return true;
    return false;
}
template <typename T>
bool STACK<T>::IsFull() {
    if(this->top==m_capacity-1)
        return true;
    return false;
}
template <typename T> 
T STACK<T>::GetTop() {
    return m_pointer[top];
}
template <typename T>
bool STACK<T>::Pop(T* pointer) {
    if(this->IsEmpty()) return false;
    if(NULL!=pointer) 
    *pointer=m_pointer[top];
    top--;
    return true;
}
template <typename T>
bool STACK<T>::Push(T data) {
    if(IsFull()) return false;
    top++;
    m_pointer[top]=data;
    return true;
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值