#include<iostream.h>
#include"Seqstack.h"
#include"stack.h"
template<class T>
Seqstack<T>::Seqstack(int sz):top(-1),maxSize(sz)
{
elements=new T[maxSize];
assert(elements!=NULL);
}
template<class T>
void Seqstack<T>::overflowProcess()
{
T *newArray=new T[maxSize+stackIncreament];
if(newArray=NULL)
{
cerr<<"存储分配失败!"<<endl;
exit(1);
}
for(int i=0;i<=top;i++)
newArray[i]=elements[i];
maxSize+=stackIncreament;
delete[]elements;
elements=newArray;
}
template<class T>
void Seqstack<T>::Push(const T &x)
{
if(IsFull()==true)
overflowProcess();
else
elements[++top]=x;
}
template<class T>
bool Seqstack<T>:: Pop(T&x)
{
if(IsEmpty()==true)
return false;
else
x=elements[top--];
return true;
}
template<class T>
bool Seqstack<T>:: getTop(T&x)
{
if(IsEmpty()==true)
return false;
x=elements[top];
return true;
}
template<class T>
ostream &operator<<(ostream &os,Seqstack<T>&s)
{
os<<"top="<<s.top<<endl;
for(int i=0;i<=s.top;i++)
os<<i<<";"<<s.elements[i]<<endl;
return os;
}
int main()
{
Seqstack<int> seq(5);
int x=20;
int y=30;
Push( x);
Push(y);
cout<<seq;
return 0;
}