初始化顺序栈
#include<stdio.h>
#include<iostream>
#define MAX_BUF 10
typedef struct{
int data[MAX_BUF];
int top;//栈顶指针
} SqStack;
//初始化栈
void InitStack(SqStack &S) {
S.top = -1;//初始化栈顶指针
}
顺序栈进栈操作
//新元素入栈
bool Push(SqStack &S,int x)
{
if(S.top == MAX_BUF - 1)
return false;//栈满
S.top = S.top + 1;
S.data[S.top] = x;
//上面两句可简化为 S.data[++S.top] = x; 注意一定要前置++
return true;
}
顺序栈出栈操作
//出栈操作
bool Pop(SqStack &S,int &x)
{
if(S.top == -1)
return false;
x = S.data[S.top];
S.top=S.top-1;
//上面两句可简化为 x = S.data[S.top--]; 注意一定要后置--
}
获取栈顶元素
//读取栈顶元素
bool GetTop(SqStack &S,int &x)
{
if(S.top == -1)
return false;
x=S.data[S.top];
return true;
}
判空
bool StackEmpty(SqStack S)
{
if(S.top == -1)
return true;//栈空
else
return false;
}
判满
bool StackFull(SqStack S)
{
if(S.top == MAX_BUF - 1)
return true;//栈满
else
return false;
}
哪里不足欢迎指正