栈的顺序存储结构

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. 栈的顺序存储实现(顺序栈)

    目录 1.初始化 2.判断栈是否为空 3.入栈 4.出栈 5.读取栈顶 6.top指针初始化为0的情况 7.共享栈 补充一个小知识点:n个不同元素进栈,那么出栈元素不同的排列的个数为  . 上述公式被 ...

  2. 数据结构——栈的顺序存储结构

    一.栈的概念 栈是一种操作受限的,只允许一端进行插入和删除的线性表,允许进行操作的一端叫做栈顶(top),另一端为栈底(bottom),插入操作为入栈或进栈,删除操作称为出栈或退栈. 二.栈的顺序存储 ...

  3. 数据结构学习笔记——栈的基本知识和顺序存储结构实现栈(顺序栈)

    目录 一.栈 (一)栈的概念 (二)栈的排列 (三)共享栈 (四)栈的常见应用 二.顺序栈的定义 三.顺序栈的初始化 四.判断顺序栈是否为空栈 五.判断顺序栈是否为满栈 六.进栈(插入操作) 七.出栈 ...

  4. 栈的顺序存储结构、链式存储架构及其实现

    顺序栈和链式栈的时间复杂度均为O(1), 因此唯一可以比较的是空间性能.初始时顺序栈必须开辟一个固定的长度内存,所以存在可存储元素个数限制和浪费空间的问题.链式栈没有栈满的问题,只有当内存空间用完才会 ...

  5. 栈的顺序存储结构框架搭建

    栈的顺序存储结构 数组模拟 #define MAX_SIZE 1024 #define SEQSTACK_TRUE 1 #define SEQSTACK_FALSE 0 结构体 typedef str ...

  6. D-OJ刷题日记:栈的顺序存储结构与操作 题目编号:457

    请你定义一个顺序栈,可以对顺序栈进行"将某个元素入栈"."弹出栈顶元素"."取栈顶元素(不删除)"."判断栈是否为空". ...

  7. (王道408考研数据结构)第三章栈和队列-第一节:栈基本概念、顺序栈和链栈基本操作

    文章目录 一:栈基本概念 (1)栈的定义 (2)压栈和出栈 (3)进栈出栈变化形式 (4)栈的操作 二:栈的顺序存储结构及其操作实现 (1)顺序栈的定义 (2)进栈 (3)出栈 (4)读取栈顶元素 ( ...

  8. 【数据结构】栈:Java实现顺序栈栈应用浅析

    1.栈是什么 定义:后进者先出,先进者后出,这就是典型的"栈"结构 操作特性:栈是一种"操作受限"的线性表,只允许在一端插入和删除数据. 使用场景:当某个数据集 ...

  9. 3.1_栈_顺序存储结构(数组形式)

    [栈的定义] 栈(stack)是限定仅在表尾进行插入和删除操作的线性表. 栈又称为后进先出(Last In First Out)线性表,简称LIFO结构. (PS:定义中的表尾是指 栈顶!) [几个关 ...

最新文章

  1. android2.2
  2. keyword-- final
  3. python绘制三维地形shade(vert_exag)参数_Python的地形三维可视化Matplotlib和gdal使用实例...
  4. [蓝桥杯][算法训练VIP]单词接龙(DFS+String)
  5. 我该用 Java 12 还是坚持 Java 11?
  6. springmvc中常见的简单的文件上传和下载
  7. 【安卓】三星手机刷机教程
  8. 【数学建模】CUMCM-2014A 嫦娥三号软着陆过程 避障阶段图像处理
  9. 视沃科技-大牛直播SDK
  10. ThinkPHP自动匹配CP端移动端模板
  11. 硬盘MBR格式转换GPT,简单方法,你会吗?
  12. 基于Lae的ffmpeg播放器
  13. ASPX一句话及一句话客户端
  14. (5)多体量子态与统计力学基础
  15. C++ 类的交叉引用
  16. 自己手写一个RPC,实现远程调用功能(基于netty、反射和代理)
  17. nexus安装 及配置阿里云代理
  18. 栈和队列---算法题目
  19. 我的Mysql 使用小册
  20. GET请求的长度限制

热门文章

  1. 国产蓝牙耳机哪款好、国内最好的蓝牙耳机品牌
  2. linux内核中配置关闭无线功能
  3. MyBatis插入大量数据效率对比:foreach、SqlSession、sql三种方式批量插入
  4. Vue CLI 插件 Plugins
  5. Vue —— 注册、登录
  6. 硬件速攻-有源蜂鸣器模块
  7. 亚马逊账号运营的坑,你知道吗?
  8. 扫地机器人杂牌的怎么样_ilife扫地机器人怎么样 好吗?
  9. 做一个有想法的技术人
  10. 一个测试管理者的年终总结