#include <iostream>
using namespace std;
//定义节点
template<typename T>
class Node
{
private:
T *data;
public:
Node *last;
int top;
int maxsize;
public:
Node(){};
Node(int value); //有参构造
~Node(){delete []data;}; //析构函数
int push(T d);//入栈
int pop();//出栈
void traversal();//遍历
};
//创建栈并写入数据
template <typename T>
Node<T>::Node(int size)
{
data=new T[size];
maxsize=size;
top=-1;
}
//入栈
template <typename T>
int Node<T>::push(T d)
{
if(maxsize-1 == top)
{
cout<<"栈已满"<<endl;
return -1;
}
else
{
data[top+=1]=d;
cout<<data[top]<<"入栈成功"<<endl;
return 0;
}
}
//出栈
template <typename T>
int Node<T>::pop()
{
if(top == -1)
{
cout<<"空栈"<<endl;
return -1;
}
else
{
cout<<data[top-=1]<<"出栈成功"<<endl;
return 0 ;
}
}
//遍历
template <typename T>
void Node<T>::traversal()
{
cout<<"top:"<<top<<endl;
int i=0;
while(i<top)
{
cout<<"data:"<<data[i]<<" "<<"i:"<<i<<endl;
i++;
}
}
int main()
{
Node <int>s1(5);
s1.push(23);
s1.pop();
s1.push(45);
s1.push(66);
s1.pop();
s1.push(88);
s1.push(99);
s1.traversal();
return 0;
}
23入栈成功
201344951出栈成功
45入栈成功
66入栈成功
45出栈成功
88入栈成功
99入栈成功
top:2
data:45 i:0
data:88 i:1