#include<iostream>
using namespace std;
struct Node
{
int data;
Node *next;
};
const int StackSize=10;
class LinkStack
{
public:
LinkStack(){top=NULL;}
~LinkStack();
void Push(int x);
int Pop();
int GetTop()
{
if(top!=NULL)
return top->data;
}
int Empty()
{if(top==NULL)
return 1;
else
return 0;
}
private:
Node *top;
};
void LinkStack::Push(int x)
{
Node *s;
s=new Node;s->data=x;
s->next=top;top=s;
}
int LinkStack::Pop()
{
int x;
Node *p;
if(top==NULL)throw"下溢";
x=top->data;p=top;
top=top->next;
delete p;
return x;
}
LinkStack::~LinkStack()
{
while(top!=NULL)
{
Node *q;
q=top;
top=top->next;
delete q;
}
}
int main()
{
int i=20,m=18;
LinkStack S;
if(S.Empty())
cout<<"栈为空"<<endl;
else
cout<<"栈非空"<<endl;
cout<<"对20和18执行入栈操作"<<endl;
S.Push(20);
S.Push(18);
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
cout<<"执行一次出栈操作"<<endl;
S.Pop();
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
return 0;