博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈[顺序栈]
阅读量:6157 次
发布时间:2019-06-21

本文共 1046 字,大约阅读时间需要 3 分钟。

顺序栈借助游标top,主要在于栈空与栈满的判定!如图可以看出,栈空的标志是:top=-1,栈满的标志是top=MAXSIZE-1,当然,具体如何约束也可以自己约定!

#define MAXSIZE 20typedef struct{    int data[MAXSIZE];    int top; /*栈顶*/}*SeqStack,Stack;

初始化栈,将top置为-1;

void InitStack(SeqStack &S)/*初始化*/{    S->top=-1;}

入栈和出栈

入栈先将top++,然后插入数据,出栈,先取数据,再将top--;这个是比较容易理解的:

完整代码

#include 
using namespace std;#define MAXSIZE 20#define OK 1#define ERROR 0typedef struct{ int data[MAXSIZE]; int top;}*SeqStack,Stack;void InitStack(SeqStack &S)/*初始化*/{ S->top=-1;} int PushStack(SeqStack &S,int e)/*入栈*/{ if(S->top>=MAXSIZE-1) { cout<<"栈已满!"<
data[++S->top]=e; return OK; }}int PopStack(SeqStack &S,int &e)/*出栈*/{ if(S->top==-1) { cout<<"栈已空!"<
data[S->top--];return OK; }}int main(void){ int e; SeqStack S=(SeqStack)malloc(sizeof(Stack));/*堆中分配*/ InitStack(S);/*初始化*/ PushStack(S,12);/*入栈*/ PopStack(S,e);/*出栈*/ cout<<"S.top="<
top<

 

转载于:https://www.cnblogs.com/tinaluo/p/5237108.html

你可能感兴趣的文章
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>
调查问卷相关
查看>>
eclipse启动无响应,老是加载不了revert resources,或停留在Loading workbench状态
查看>>
1. Git-2.12.0-64-bit .exe下载
查看>>
怎样关闭“粘滞键”?
查看>>
[转]React 教程
查看>>
拓扑排序介绍
查看>>
eclipse打开工作空间(workspace)没有任务反应
查看>>
使用Sybmol模块来构建神经网络
查看>>
字符串去分割符号
查看>>
WPF中,多key值绑定问题,一个key绑定一个界面上的对象
查看>>
UML类图简明教程
查看>>
java反编译工具(Java Decompiler)
查看>>
Android开发之自定义对话框
查看>>
微信Access Token 缓存方法
查看>>
Eclipsed的SVN插件不能识别之前工作空间的项目
查看>>
Linux 查看iptables状态-重启
查看>>
amazeui学习笔记一(开始使用2)--布局示例layouts
查看>>
c#中lock的使用(用于预约超出限额的流程)
查看>>