1. /*
  2. 栈的特性:先进后出。
  3. 栈在计算语言处理和将递归算法改为非递归算法等方面起着非常重要的作用。
  4. */
  5.  
  6. #define INITSIZE 100 //储存空间的初始分配量
  7. typedef int ElemType;
  8. typedef struct
  9. {
  10. int top; //栈顶指针
  11. ElemType *base; //存放元素的动态数组空间
  12. int stacksize; //当前栈空间的大小
  13. }sqstack;
  14.  
  15. //初始化操作
  16. //创建一个空栈,栈顶指针top初始化为0
  17. void initstack(sqstack *S)
  18. {
  19. s->base = (ElemType *)malloc(INITSIZE * sizeof(ElemType)); //申请存储空间
  20. s->top = ; //栈顶指针初始值为0
  21. s->stacksize = INITSIZE; //容量为初始值
  22. }
  23.  
  24. //求栈长操作
  25. int getlen(sqstack *S)
  26. {
  27. return (S->top);
  28. }
  29.  
  30. //取栈顶元素操作
  31. //将栈顶元素值存入e指向的内存单位,top值不变
  32. int gettop(sqstack *S,ElemType *e)
  33. {
  34. if(S->top==) return ; //栈空,返回0
  35. *e = S->base[S->top-]; //栈顶元素值存入指针e所指向的内存单元
  36. return ;
  37. }
  38.  
  39. //压栈操作
  40. //将入栈元素x存入top所指的位置上,然后栈顶指针top增1
  41. int push(sqstack *S,ElemType x)
  42. {
  43. if(S->top == S->stacksize) //若栈满,增加一个存储单元
  44. {
  45. S->base = (ElemType *)realloc(S->base,(S->stacksize+)*sizeof(ElemType));
  46. if(!S->base) return ;
  47. S->stacksize++;
  48. }
  49. S->base[S->top++] = x;
  50. return ;
  51. }
  52.  
  53. //弹栈操作
  54. //先将栈顶指针top减1,再将top单元中的元素存入指针e所指向的内存单元
  55. int pop(sqstack *S,ElemType *e)
  56. {
  57. if(S->top==)return ;
  58. *e = S->base[--S->top];
  59. return ;
  60. }
  61.  
  62. //判栈S是否为空
  63. int emptystack(sqstack *S)
  64. {
  65. if(S->top==) return ;
  66. else return ;
  67. }
  68.  
  69. //输出栈操作
  70. void list(sqstack *S)
  71. {
  72. int i;
  73. for(i=S->top-;i>=;i--)
  74. {
  75. printf("%4d",S->base[i]);
  76. }
  77. printf("\n");
  78. }

C语言实现栈代码的更多相关文章

  1. C语言函数调用栈(二)

    5 函数调用约定 创建一个栈帧的最重要步骤是主调函数如何向栈中传递函数参数.主调函数必须精确存储这些参数,以便被调函数能够访问到它们.函数通过选择特定的调用约定,来表明其希望以特定方式接收参数.此外, ...

  2. C语言函数调用栈

    C语言函数调用栈 栈溢出(stack overflow)是最常见的二进制漏洞,在介绍栈溢出之前,我们首先需要了解函数调用栈. 函数调用栈是一块连续的用来保存函数运行状态的内存区域,调用函数(calle ...

  3. 【伯乐在线】最值得阅读学习的 10 个 C 语言开源项目代码

    原文出处: 平凡之路的博客   欢迎分享原创到伯乐头条 伯乐在线注:『阅读优秀代码是提高开发人员修为的一种捷径』http://t.cn/S4RGEz .之前@伯乐头条 曾发过一条微博:『C 语言进阶有 ...

  4. VS2015提示:未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用。服务器控件的标记Intellisense可能不起作用

    一.问题 最近在VS2015打开文件,提示未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用.服务器控件的标记Intellisense可能不起作用. Int ...

  5. 小C和小派的缠绵爱情——C语言调用Python代码

    我妒忌你的开源,你眼红我的速度,不如我们就在一起吧! --------SJ2050 2019.4.9号更新:实现在未安装python环境的机子上运行调用了python程序的C语言代码! 文章目录 环境 ...

  6. 《Linux内核分析》week1作业-分析一个简单c语言的汇编代码

    1.C语言源码 #include <stdio.h> int g(int x){ ; } int f(int x){ return g(x); } int main(){ )+; } 2. ...

  7. 4-29 c语言之栈,队列,双向链表

    今天学习了数据结构中栈,队列的知识 相对于单链表来说,栈和队列就是添加的方式不同,队列就相当于排队,先排队的先出来(FIFO),而栈就相当于弹夹,先压进去的子弹后出来(FILO). 首先看一下栈(St ...

  8. 数据结构(c语言版)代码

    第1章  绪论       文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲01 绪论  概述        第一章作为绪论,主要介绍了数据结构与算法中的一些基本概念和术语.对于这些概念术语 ...

  9. C语言数据结构-栈

    一.栈的定义 栈(statck)这种数据结构在计算机中是相当出名的.栈中的数据是先进后出的(First In Last Out, FILO).栈只有一个出口,允许新增元素(只能在栈顶上增加). 移出元 ...

随机推荐

  1. 使用matlab画半透明椭圆

    先上最终效果图: 本来是想直接用scatter和alpha来画的,结果在尝试以下代码后,发现无法显示透明效果 scatter(rand(1000,1),rand(1000,1), 'filled'); ...

  2. Python_编程特色

    目录 目录 前言 软件环境 列表推导式 字典的默认值 forelse语句 交换两个变量的值 链式比较 真值测试 序列类型元素反转 连接字符串和列表 内置算术函数 利用zip来创建键值对 最后 前言 P ...

  3. Kotlin 的 @JvmStatic 和 @JvmField 注解

    这是关于 Java 静态方法和静态变量的一段代码: public class TestStatic { private int otherField = 0; public static final ...

  4. Stream流实现斐波那契数列

    1.前言 我们都知道斐波那契数列有很多种实现方法,在jdk1.8以前没有流操作,只能通过递归或者迭代等其他方式来实现斐波那契数列, 但是jdk1.8以后,有了流操作,我们就可以使用流来实现斐波那契数列 ...

  5. cocos2dx[3.2](3) 浅析CCDeprecated.h

    CCDeprecated.h中存放的都是2.x将要被抛弃的命名规范,主要包含类名.枚举类型. 虽然说2.x的这些命名规范被CCDeprecated.h保留了.但是为了彻底学习3.x的新特性,就必须要尽 ...

  6. 【OpenCV开发】imread和imwrite的类型以及第三个参数关于图片压缩质量等

    本片参考博客:http://blog.csdn.net/poem_qianmo/article/details/20537737 基于OpenCV3.0,与原博客有出入. 在OpenCV1.0时代,基 ...

  7. SpringBoot项目集成cas单点登录

    添加依赖 添加cas client依赖 <dependency> <groupId>net.unicon.cas</groupId> <artifactId& ...

  8. Dubbo基础、高级讲解

    基础 https://blog.csdn.net/hardworking0323/article/category/6148466 高级 https://blog.csdn.net/hardworki ...

  9. [转帖].NET Core 项目指定SDK版本

    .NET Core 项目指定SDK版本 https://www.cnblogs.com/stulzq/p/9503121.html 一. 版本里的坑 自从 .NET Core 2.1.0版本发布以后, ...

  10. 快速安装create-react-app脚手架

    create-react-app搭建react项目:https://blog.csdn.net/weixin_41077029/article/details/82622106 快速安装create- ...