背景
王道的数据结构代码书适合笔试,但本人喜欢调试代码以深入理解数据结构,在大佬的博客发现了可以直接run的C++代码,燕过留痕。
参考链接: 顺序栈的基本函数C++实现.
代码实现
/*
* @Description: 王道的堆栈基本函数P66
* @Version:
* @Autor: Lizn
* @Date: 2021-07-28 15:07:37
* @LastEditors: Lizn
* @LastEditTime: 2021-07-29 09:27:00
*/
#include <stdio.h>
#include <stdlib.h>
//定义最大栈容量
#define MAX 7
//转成和王道兼容
typedef int ElemType;
typedef struct//顺序栈
{ //栈的数据
ElemType data[MAX];
//栈顶
int top;
}SqStack;
/**
* @description: 堆栈初始化
* @param {*}
* @return {*}
* @author: Lizn
*/
SqStack InitStack()
{
SqStack s;
s.top = -1;
return s;
}
/**
* @description: 判断堆栈是否空
* @param {*}
* @return {*}
* @author: Lizn
*/
int StackEmpty(SqStack s)
{
if(s.top == -1)
return 0;
else
return 1;
}
/**
* @description: 入栈
* @param {SqStack} &s 堆栈主体
* @param {ElemType} x 栈值
* @return {*}
* @author: Lizn
*/
void Push(SqStack &s,ElemType x)
{
if(s.top == MAX-1) //进栈的时候必须判断是否栈满
printf("stack full\n");
s.data[++s.top] = x;//栈顶先+1,后入栈
}
/**
* @description: 出栈
* @param {SqStack} &s堆栈主体
* @return {ElemType} 被吐出的栈值
* @author: Lizn
*/
ElemType Pop(SqStack &s)
{
if(s.top == -1) //出栈的时候必须判断是否栈空
printf("stack empty\n");
ElemType x;
x = s.data[s.top--];//栈顶先出栈,后-1
return x;
}