以下是链栈的一些基本操作,包括链栈的推入、弹出、读栈顶元素以及打印。
#include<iostream>
using namespace std;
//抽象数据类型
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}StackNode,*LinkStack;
//链栈的推入
void Push(LinkStack &top,datatype x)
{
StackNode *p=new StackNode;
p->data=x;
p->next=top;
top=p;
}
//链栈的弹出
void Pop(LinkStack &top)
{
//参数检查
if(top==NULL)
{
cout<<"链栈为空(underflow)!"<<endl;
return;
}
StackNode *p=top;
top=top->next;
delete p;
}
//读链栈的栈顶元素
datatype GetTop(LinkStack &top)
{
return top->data;
}
//打印栈中的元素
void Print(LinkStack &top)
{
LinkStack r=top;
while(r!=NULL)
{
cout<<r->data<<" ";
r=r->next;
}
cout<<endl;
}
//主方法
int main()
{
LinkStack top=NULL;
datatype x;
cout<<"请输入推入栈的元素,并以0为结尾:"<<endl;
while(cin>>x,x!=0)
Push(top,x);
cout<<"则栈中的元素为:"<<endl;
Print(top);
cout<<"栈顶元素为:"<<endl<<GetTop(top)<<endl;
cout<<"弹出栈顶元素后,栈中的元素为:"<<endl;
Pop(top);
Print(top);
return 0;
}