SeqStack.h
#ifndef SeqStack_H
#define SeqStack_H
const int StackSize=10;
template<class DataType>
class SeqStack
{
public:
SeqStack();
~SeqStack(){}
void Push(DataType x);
DataType pop();
DataType GetTop();
int Empty();
private:
DataType data[StackSize];
int top;
};
#endif
<span style="font-family: Arial, Helvetica, sans-serif;">SeqStack.cpp</span><pre name="code" class="html">
<pre name="code" class="cpp">#include"SeqStack.h"
template<class DataType>
SeqStack<DataType>::SeqStack()
{
top=-1;
}
template<class DataType>
void SeqStack<DataType>::Push(DataType x)
{
if (top==StackSize-1)throw"上溢";
top++;
data[top]=x;
}
template <class DataType>
DataType SeqStack<DataType>::pop()
{
DataType x;
if(top==-1)throw"下溢";
x=data[top--];
return x;
}
template<class DataType>
DataType SeqStack<DataType>::GetTop()
{
if(top!=-1)
return data[top];
}
template<class DataType>
int SeqStack<DataType>::Empty()
{
if(top==-1)return 1;
else return 0;
}
SeqStack_main
#include<iostream>
using namespace std;
#include"SeqStack.cpp"
void main()
{
SeqStack<int>S;
if(S.Empty())
<span style="white-space:pre"> </span> cout<<"栈为空"<<endl;
else
<span style="white-space:pre"> </span> cout<<"栈非空"<<endl;
cout<<"对15和10执行入栈操作"<<endl;
S.Push (15);
S.Push(10);
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
cout<<"执行一次出栈操作"<<endl;
S.pop();
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
}
实验结果
<img src="https://img-blog.csdn.net/20141103230549664?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvT1VZQU5HWVVBTkJJTg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />