这是头文件seqStack.h
//seqStack.h
#ifndef SEQSTACK_H_INCLUDED
#define SEQSTACK_H_INCLUDED
#include <iostream>
using namespace std;
template<class T>
class seqStack
{
public:
seqStack();
seqStack(int num);
bool empty()const;
void pop();
void push(const T &x);
int size()const;
const T&top()const;
void print()const;
private:
int MAX_LENGTH;
T *data;
void init();
int iTop;
};
template<class T>
seqStack<T>::seqStack():MAX_LENGTH(100)
{
init();
}
template<class T>
seqStack<T>::seqStack(int num):MAX_LENGTH(num)
{
init();
}
template<class T>
void seqStack<T>::init()
{
data=new T[MAX_LENGTH];
iTop=-1;
}
template<class T>
bool seqStack<T>::empty()const
{
return iTop==-1;
}
template<class T>
void seqStack<T>::pop()
{
if(iTop>-1)
iTop--;
}
template<class T>
void seqStack<T>::push(const T&x)
{
if(iTop==MAX_LENGTH-1)
{
cout<<"Stack is fulled"<<endl;
return ;
}
iTop++;
data[iTop]=x;
}
template<class T>
int seqStack<T>::size()const
{
return iTop+1;
}
template<class T>
const T&seqStack<T>::top()const
{
if(iTop>-1)
return data[iTop];
cout<<"stack is empty"<<endl;
T t;
return t;
}
template<class T>
void seqStack<T>::print()const
{
for(int i=0;i<=iTop;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
#endif // SEQSTACK_H_INCLUDED
这是一个示例
using namespace std;
int main()
{
seqStack<int> s;
s.push(1);
s.push(7);
s.print();
s.print();
s.push(2);
s.print();
cout<<s.top()<<endl;
s.pop();
s.print();
s.pop();
s.print();
s.pop();
s.print();
return 0;
}
- 本文链接: http://hjwblog.com/archives/顺序栈类模板实现
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!