版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Suyebiubiu/article/details/80490518
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
/*
顺序栈
几个状态:1.栈空状态 2.栈满状态 3.非法状态(上溢和下溢)
*/
#include "stdafx.h"
#include<iostream>
using namespace std;
#define maxSize 500
//顺序栈的结构体
typedef struct {
int data[maxSize];
int top;
}Sqstack;
//1.初始化栈(实际中一般不会调用这个方法,见主函数创建一个stack部分)
void initStack(Sqstack *stack) {
stack->top = -1;//初始化栈,只需要将栈顶指针设置为-1
}
//2.判断栈是否为空,栈为空的时候返回1,否则返回0
int isEmpty(Sqstack stack) {
if (stack.top=-1) {
return 1;
}
else
{
return 0;
}
}
//3.进栈的代码
int push(Sqstack *stack,int x) {
if (stack->top==maxSize-1) {//栈满的时候不能进栈
return 0;
}
++(stack->top);//先移动指针,再进栈
stack->data[stack->top] = x;
return 1;
}
//4.出栈的代码
int pop(Sqstack *stack) {
if (stack->top==-1) {//如果栈为空,则不能出栈
return 0;
}
int x = stack->data[stack->top];//先取出元素再移动指针
--(stack->top);
return 1;
}
int main()
{
//一般情况下,栈的写法很简单,上述函数仅供参考,使用价值不高,常用的写法如下所示(比较实用):
//1.定义一个栈并且进行初始化
int stack[maxSize];
int top = -1;
//2.元素x进栈
int x;
cin >> x;
stack[++top] = x;
//3.元素出栈(输出栈顶元素)
x=stack[top--];
cout << x << endl;
//防止程序一闪而过
int f;
cin >> f;
return 0;
}