顺序栈的基本操作包括:
void Initstack(Sqstack &S);//初始化
bool Stackempty(Sqstack S);//判断是否为空栈
bool Push(Sqstack &S,int x);//入栈一个元素
bool Pop(Sqstack &S,int &x);//出栈一个元素
int Gettop(Sqstack S,int&x);//读取栈顶元素
void Destroystack(Sqstack &S);//销毁栈
#include<stdio.h>
#define Maxsize 10
typedef struct{
int data[Maxsize];
int top;
}Sqstack;
void Initstack(Sqstack &S);//初始化
bool Stackempty(Sqstack S);//判断是否为空栈
bool Push(Sqstack &S,int x);//入栈一个元素
bool Pop(Sqstack &S,int &x);//出栈一个元素
int Gettop(Sqstack S,int&x);//读取栈顶元素
void Destroystack(Sqstack &S);//销毁栈
int main()
{
int a;
Sqstack S;
Initstack(S);
if(Stackempty(S))
{
printf("null\n");
};
Push(S,1);
Push(S,2);
Push(S,3);
Pop(S,a);
printf("%d\n",a);
printf("%d\n",Gettop(S,a));
Destroystack(S);
printf("%d\n",Gettop(S,a));
printf("%d\n",a);
return 0;
}
void Initstack(Sqstack &S)//初始化
{
S.top=-1;
}
bool Stackempty(Sqstack S)//判断是否为空栈
{
if (S.top==-1)
return true;
else
return false;
}
bool Push(Sqstack &S,int x)//入栈一个元素
{
if(S.top==Maxsize-1)
return false;
S.data[++S.top]=x;
return true;
}
bool Pop(Sqstack &S,int &x)//出栈一个元素
{
if(S.top==-1)
return false;
x=S.data[S.top--];
return true;
}
int Gettop(Sqstack S,int &x)//读取栈顶元素
{
if(S.top==-1)
return false;
x=S.data[S.top];
return x;
}
void Destroystack(Sqstack &S)
{
while(S.top!=-1)
{
S.data[S.top--]=0;
}
}