文章目录
1.顺序栈的基本操作
个人理解:顺序栈其实就是一个数组,只不过人为地给其加上限制,使得入栈元素满足后进先出的规则。在实际运用中,栈大都作为辅助结构,是帮助解决问题的一种手段。在考研中,单独对栈的编程题也很少出,就算运用到栈的方法,也不可能让我们针对栈写函数,直接在函数里定义一个数组,令其满足后进先出的规则即可代表栈。(相对的,这也是我总结的最轻松的一篇hah)
废话不多说,都在代码里
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct Stack{
//结构体
Elemtype data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack &S) //初始化
{
S.top=-1;
}
bool StackEmpty(SqStack S) //判断栈空
{
if(S.top==-1)
return true;
else
return false;
}
bool Push(SqStack &S,Elemtype x) //入栈 ps:x作为栈顶元素压入栈
{
if(S.top==MaxSize-1)
{
printf("栈已满!请先出栈\n");
return false;
}
else {
//此处else可以不写,因为如果进入if,必定出函数
S.data[++S.top]=x; //此句王道书写的很简洁,值得我们多加学习运用(大牛自动忽略小白注释^_^)
return true;
}
}
bool Pop(SqStack &S,Elemtype &x) //出栈 ps:x作为显示变量,修改之后读出,此处x并不是作为形参传入函数
{
if(S.top==-1)
{
printf(