栈的顺序存储结构(顺序栈)
栈的顺序存储结构
1.顺序栈的存储结构
#define MAXSIZE 100 //顺序栈存储空间的初始分配
typedef struct{SElemType *base; //栈底指针SElemType *top; //栈顶指针int stacksize; //栈可用的最大容量
}SqStack;
2.顺序栈的初始化
初始化就是为顺序栈动态分配一个预定义大小的数组空间
栈属于逻辑结构
数组为顺序存储结构(存储/物理结构:逻辑结构在计算机中的存储形式)
具体关系见本人关于数据结构第一章图解:传送门
Status InitStack(SqStack &S){ //形参使用引用&,以下函数对S操作就是对实参的操作S.base = new SElemType[MAXSIZE]; //为栈分配一个数组//为顺序栈动态分配一个最大容量为MAXSIZE的数组空间//数组名为指向数组第一个元素的指针,所以将这里的指针赋值给指向栈第一个元素的栈底指针if(!S.base) //判断是否分配成功exit(OVERFLOW);S.top = S.base; //初始化时SqStack S为空栈(栈内没有任何元素)S.stacksize = MAXISIZE; //将栈的大小置为最大容量MAXSIZEreturn OK; //返回初始化状态(是否成功完成初始化)
}
3.顺序栈的入栈操作
入栈(进栈/压栈)是指在栈顶插入一个新元素
Status Push(SqStack &S, SElemType e){ //形参使用引用&,以下函数对S操作就是对实参的操作if(S.top - S.base == S.stacksize) //判断栈是否已满return ERROR;*S.top++ = e; //元素e压入栈顶,栈顶指针top加1//后置式递增要拷贝一个临时对象,S.top调用栈顶指针,*(S.top)解引用//将e赋值给临时对象(*S.top),然后再进行自增++return OK;
}
4.顺序栈的出栈操作
出栈就是将栈顶元素删除
Status Pop(SqStack &S, SElemType &e){ //形参使用引用&,以下函数对S和e操作就是对实参的操作if(S.top == S.base) //判断栈是否为空return ERROR;e = *--S.top; //栈顶指针先减1,然后将栈顶元素赋值给ereturn OK;
}
5.取栈顶元素
当栈非空时,返回当前栈顶元素的值。栈顶指针保持不变
SElemType GetTop(SqStack S){if(S.top != S.base) //栈非空return *(S.top-1);
}
栈的顺序存储结构(顺序栈)相关推荐
- 栈的顺序存储实现(顺序栈)
目录 1.初始化 2.判断栈是否为空 3.入栈 4.出栈 5.读取栈顶 6.top指针初始化为0的情况 7.共享栈 补充一个小知识点:n个不同元素进栈,那么出栈元素不同的排列的个数为 . 上述公式被 ...
- 数据结构——栈的顺序存储结构
一.栈的概念 栈是一种操作受限的,只允许一端进行插入和删除的线性表,允许进行操作的一端叫做栈顶(top),另一端为栈底(bottom),插入操作为入栈或进栈,删除操作称为出栈或退栈. 二.栈的顺序存储 ...
- 数据结构学习笔记——栈的基本知识和顺序存储结构实现栈(顺序栈)
目录 一.栈 (一)栈的概念 (二)栈的排列 (三)共享栈 (四)栈的常见应用 二.顺序栈的定义 三.顺序栈的初始化 四.判断顺序栈是否为空栈 五.判断顺序栈是否为满栈 六.进栈(插入操作) 七.出栈 ...
- 栈的顺序存储结构、链式存储架构及其实现
顺序栈和链式栈的时间复杂度均为O(1), 因此唯一可以比较的是空间性能.初始时顺序栈必须开辟一个固定的长度内存,所以存在可存储元素个数限制和浪费空间的问题.链式栈没有栈满的问题,只有当内存空间用完才会 ...
- 栈的顺序存储结构框架搭建
栈的顺序存储结构 数组模拟 #define MAX_SIZE 1024 #define SEQSTACK_TRUE 1 #define SEQSTACK_FALSE 0 结构体 typedef str ...
- D-OJ刷题日记:栈的顺序存储结构与操作 题目编号:457
请你定义一个顺序栈,可以对顺序栈进行"将某个元素入栈"."弹出栈顶元素"."取栈顶元素(不删除)"."判断栈是否为空". ...
- (王道408考研数据结构)第三章栈和队列-第一节:栈基本概念、顺序栈和链栈基本操作
文章目录 一:栈基本概念 (1)栈的定义 (2)压栈和出栈 (3)进栈出栈变化形式 (4)栈的操作 二:栈的顺序存储结构及其操作实现 (1)顺序栈的定义 (2)进栈 (3)出栈 (4)读取栈顶元素 ( ...
- 【数据结构】栈:Java实现顺序栈栈应用浅析
1.栈是什么 定义:后进者先出,先进者后出,这就是典型的"栈"结构 操作特性:栈是一种"操作受限"的线性表,只允许在一端插入和删除数据. 使用场景:当某个数据集 ...
- 3.1_栈_顺序存储结构(数组形式)
[栈的定义] 栈(stack)是限定仅在表尾进行插入和删除操作的线性表. 栈又称为后进先出(Last In First Out)线性表,简称LIFO结构. (PS:定义中的表尾是指 栈顶!) [几个关 ...
最新文章
- android2.2
- keyword-- final
- python绘制三维地形shade(vert_exag)参数_Python的地形三维可视化Matplotlib和gdal使用实例...
- [蓝桥杯][算法训练VIP]单词接龙(DFS+String)
- 我该用 Java 12 还是坚持 Java 11?
- springmvc中常见的简单的文件上传和下载
- 【安卓】三星手机刷机教程
- 【数学建模】CUMCM-2014A 嫦娥三号软着陆过程 避障阶段图像处理
- 视沃科技-大牛直播SDK
- ThinkPHP自动匹配CP端移动端模板
- 硬盘MBR格式转换GPT,简单方法,你会吗?
- 基于Lae的ffmpeg播放器
- ASPX一句话及一句话客户端
- (5)多体量子态与统计力学基础
- C++ 类的交叉引用
- 自己手写一个RPC,实现远程调用功能(基于netty、反射和代理)
- nexus安装 及配置阿里云代理
- 栈和队列---算法题目
- 我的Mysql 使用小册
- GET请求的长度限制