手动实现顺序栈,要求实现数据结构中,所有栈的相关操作
#include <iostream>
using namespace std;
template <typename T>
class Seqstack
{
private:
T* data;
T maxsize;
T top;
public:
Seqstack(); //无参构造
~Seqstack(); //析构函数
bool Empty(); //判断栈是否为空
bool full(); //判断栈是否为满
void insert(T s); //入栈
void update(); //出栈
void clear(); //清空栈
void show()
{
if (-1 == top)
{
cout<<" 栈空 "<<endl;;
}else
{
for(int i = 0; i<=top; i++)
{
cout<<data[i]<<endl;
}
}
}
};
template <typename T> //无参构造
Seqstack<T>::Seqstack():maxsize(100)
{
data = new T(maxsize);
top = -1;
cout<<"无参构造"<<endl;
}
template <typename T> //析构函数
Seqstack<T>::~Seqstack()
{
delete []data;
cout<<"析构函数"<<endl;
}
template <typename T> //判断栈是否为空
bool Seqstack<T>::Empty()
{
return top == -1;
}
template <typename T> //判断栈是否为满
bool Seqstack<T>::full()
{
return top == maxsize-1;
}
template <typename T> //入栈
void Seqstack<T>::insert(T s)
{
top+=1;
data[top] = s;
}
template <typename T> //出栈
void Seqstack<T>::update()
{
if (-1 == top)
cout<<" 栈空 "<<endl;
cout<<" 出栈的元素 = "<<data[top]<<endl;
top-=1;
}
template <typename T>
void Seqstack<T>::clear()
{
top = -1;
}
int main()
{
Seqstack<int>s1;
s1.insert(1);
s1.insert(2);
s1.insert(3);
s1.insert(4);
s1.show();
s1.update();
s1.show();
s1.clear();
int num = s1.Empty();
if (true == num)
{
cout<<" 栈空 "<<endl;
}
system("pause");
return 0;
}
思维导图