代码段:

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<string.h>
#define MaxSize 50//定义栈最大长深度
#define ElemType int//把int命名为ElemType
typedef struct
{ElemType data[MaxSize];//存放栈元素int top;            //栈顶指针
}SqStack;void InitStack(SqStack& S)//初始化栈
{S.top = -1;
}bool StackEmpty(SqStack S)//判断栈空
{if (S.top == -1)//栈空return true;else             //不空return false;}bool Push(SqStack& S, ElemType x)  //进栈操作
{if (S.top == MaxSize - 1)//栈满报错return false;else{//指针加1,再入栈S.data[++S.top] =x;return true;}
}bool  Pop(SqStack& S,ElemType &x)//出栈
{if (S.top == -1)//栈空退出return false;else{x = S.data[S.top];//先出栈,再减一,x用于保留栈顶元素S.top--;return true;}
}bool GetStack(SqStack S, ElemType &elem)//读取栈顶元素
{if (S.top == -1)  //栈空,退出return false;else{elem= S.data[S.top];//elem 保留栈顶元素printf("\n栈顶元素为:%d", elem);printf("\n");return true;}
}
int main()
{SqStack S;//定义栈while (1){printf("\n\n********请输入接下来的操作:*************\n");printf("1:初始化栈\n");printf("2:进栈\n");printf("3:出栈\n");printf("4:读取栈顶元素:\n");printf("-1:退出\n\n");int count = 0;ElemType x1 = 0,x2=0, elem = 0;printf("操作:");scanf_s("%d", &count);if (count == -1)break;switch (count){case 1:InitStack(S);break;case 2:printf("请输入进栈元素:");scanf_s("%d", &x1);Push(S, x1);break;case 3:Pop(S, x2);printf("出栈元素为:%d", x2);break;case 4:GetStack(S,elem);break;}}return 0;
}

运行结果:

数据结构栈的操作,初始化栈,进栈,出栈,读取栈顶元素;相关推荐

  1. C语言查看队头元素,C语言实现循环队列的初始化进队出队读取队头元素判空-1...

    目前,处在学习数据结构+ing,由于之前学过了队列,今天就把自己写过的代码做了一些完善分享给大家,希望能够帮助到有需要的朋友,有不足的地方欢迎大家交流    φ(゜▽゜*)♪ 队列是另一种限定性的线性 ...

  2. c语言while队列不为空,C语言实现循环队列的初始化进队出队读取队头元素判空-2...

    /*顺序表实现队列的一系列操作(设置flag标志不损失数组空间)*/ #include #include #define Queue_Size 50 //队列的最大长度 #define OK 1 #d ...

  3. 栈的压入、弹出序列和栈所有可能的弹出顺序

    题目:输入两个整数序列,第一序列表示栈的压入顺序(假设没有相同的整数值),判断第二个序列是否为该栈弹出顺序.经典的一个笔试题目. #include <iostream> #include ...

  4. 1.若元素的进栈序列为:A、B、C、D、E,则:运用栈操作,能否得到出栈序列B、C、A、E、D和D、B、A、C、E?为什么?

    初学数据结构,有一些有意思的东西就写出来记录一下 这个是上课的时候老师出的课堂考试题目,觉得很有意思,分享给大家. 初看题目的时候,第一反应是栈是先进后出,那出栈顺序不就只有一种(E.D.C.B.A) ...

  5. 数据结构——栈(栈结构、栈面试题、栈的操作、栈结构实现、进制的转换)

    目录 一.栈结构 二.栈面试题 四.栈的操作 1.push方法 2.pop方法 3.peek方法 4.isEmpty方法 5.size方法 五.栈结构实现 六.十进制转二进制 七.二进制.十六进制.十 ...

  6. c语言出栈入栈指针的管理,设计顺序栈有关入栈和出栈的操作算法

    问题描述: 设有两个栈s1.s2都釆用顺序栈方式,并且共享一个存储区[0, -, maxsize-1],为了尽量利用空间,减少溢出的可能,可釆用栈顶相向.迎面增长的存储方式.试设计s1.s2 有关入栈 ...

  7. 《大话数据结构》3、4、5线性表、栈与队列、串

    第3章线性表 41 线性表:零个或多个数据元素的有限序列. 3.1开场白 42 门外家长都挤在大门口与门里的小孩子的井然有序,形成了鲜明对比.哎,有时大人的所作所为,其实还不如孩子. 3.2线性表的定 ...

  8. 你只知道JVM栈,知不知道栈帧、局部变量表、slot、操作数栈?

    目录 虚拟机栈基础 虚拟机栈出现的背景 栈是运行时的单位,而堆是存储的单位 Java虚拟机栈 栈中可能出现的异常 设置Java栈大小 栈中存储什么? 栈运行原理 栈帧的内部结构 每个栈帧中存储着 局部 ...

  9. 微信小程序页面栈_微信小程序开发中的页面栈及页面路由原理

    摘要:小程序的开发方兴未艾,本文以图解的形式详细剖析了小程序开发中的页面栈及页面路由原理,对于该原理的深入理解有助于开发者更好地理解小程序的开发框架,更好地开发出功能强大的小程序. 微信小程序(以下简 ...

最新文章

  1. px4flow智能光学流动传感器
  2. cannot和can not的区别 666666
  3. 六大赚钱定律,让你赚大钱
  4. 绝地求生大逃杀最新服务器,《绝地求生大逃杀》将建立该国家或地区玩家的专有服务器!...
  5. markdown流程图画法小结
  6. Python标准库中的shutil
  7. 详解.NET IL代码
  8. python数学计算模块之math常用函数学习使用
  9. Ubuntu中搭建ICE服务器(Coturn)
  10. html+css+js:文案馆网页设计
  11. 秒搜编程好书 就用这个Python写的爬虫网站
  12. Windows 2003安装和配置活动目录服务 zz
  13. 淘宝优惠券(高省)那些套路,我已经看穿了
  14. C# async / await 任务超时处理
  15. 微信小程序设计第一期第六节:图片大小的调整
  16. android登录实现回显用户名和密码
  17. 什么是软件验收测试?如何获取软件验收测试报告
  18. 用计算机投屏图片,电脑网页投屏到电视
  19. 龙光集团布局广州,以龙光·天皓为业主拾起温度
  20. 关于影印版与翻译版的对比

热门文章

  1. cmd 更新 pip版本指令
  2. MATLAB 画图--图形属性设置
  3. python调用函数实现银行ATM典型案例练习
  4. html页面中如何添加背景音乐
  5. 如何搞出一个大型网站
  6. linux内核熵池,快速的给内核熵池喂随机数
  7. JavaScript <script>
  8. 快速排序(升序+降序)
  9. 潜在狄利克雷分配(LDA)(latent Dirichlet allocation)
  10. iOS开发技术-实验一-简易计算器实现