模版栈的头文件
感觉还是可以的
#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;
}