/*
栈的特性:先进后出。
栈在计算语言处理和将递归算法改为非递归算法等方面起着非常重要的作用。
*/ #define INITSIZE 100 //储存空间的初始分配量
typedef int ElemType;
typedef struct
{
int top; //栈顶指针
ElemType *base; //存放元素的动态数组空间
int stacksize; //当前栈空间的大小
}sqstack; //初始化操作
//创建一个空栈,栈顶指针top初始化为0
void initstack(sqstack *S)
{
s->base = (ElemType *)malloc(INITSIZE * sizeof(ElemType)); //申请存储空间
s->top = ; //栈顶指针初始值为0
s->stacksize = INITSIZE; //容量为初始值
} //求栈长操作
int getlen(sqstack *S)
{
return (S->top);
} //取栈顶元素操作
//将栈顶元素值存入e指向的内存单位,top值不变
int gettop(sqstack *S,ElemType *e)
{
if(S->top==) return ; //栈空,返回0
*e = S->base[S->top-]; //栈顶元素值存入指针e所指向的内存单元
return ;
} //压栈操作
//将入栈元素x存入top所指的位置上,然后栈顶指针top增1
int push(sqstack *S,ElemType x)
{
if(S->top == S->stacksize) //若栈满,增加一个存储单元
{
S->base = (ElemType *)realloc(S->base,(S->stacksize+)*sizeof(ElemType));
if(!S->base) return ;
S->stacksize++;
}
S->base[S->top++] = x;
return ;
} //弹栈操作
//先将栈顶指针top减1,再将top单元中的元素存入指针e所指向的内存单元
int pop(sqstack *S,ElemType *e)
{
if(S->top==)return ;
*e = S->base[--S->top];
return ;
} //判栈S是否为空
int emptystack(sqstack *S)
{
if(S->top==) return ;
else return ;
} //输出栈操作
void list(sqstack *S)
{
int i;
for(i=S->top-;i>=;i--)
{
printf("%4d",S->base[i]);
}
printf("\n");
}

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. leetcode 160相交链表

    暴力解法当然可以遍历两个链表,不过time O(mn) space O(1)暂且不说, 方法一:双指针, time O(m+n),space O(1) 可以对比判断环形链表的快慢指针法. 这种方法构思 ...

  2. block(块级元素)和 inline(内联元素) 的区别

    block(块级元素)和 inline(内联元素) 的区别 (2009-01-05 10:32:07) 转载▼ 标签: 杂谈 分类: div+css div这样的块级元素,就会自动占据一定矩形空间,可 ...

  3. H5、原生app、混合开发三者比较

    一.概念 a) H5:即Html5,接触过互联网的都知道html,所以很明显h5是html的第5次重大修改的一项超文本标记语言的标准协议. b) 原生:使用原生制作APP(Native app),即在 ...

  4. java:struts框架4(Ajax)

    1.Ajax: 先导入jar包: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!D ...

  5. nova计算服务

    1. nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. ...

  6. Eclipse 包含头文件 添加环境变量

    Eclipse 中新建C 或C ++到项目时,头文件报警,显示“Unresolved inclusion:<stdio.h>” 虽然不影响项目到编译和运行,确也无法查看头文件,让人感觉实在 ...

  7. heartbeat双主高可用

    一.基础配置 1.hostnamectl set-hostname node1 (node2) 2.[root@node1 ~]# cat /etc/hosts     192.168.40.128 ...

  8. Kubernetes网络隔离NetworkPolicy

    Kubernetes要求集群中所有pod,无论是节点内还是跨节点,都可以直接通信,或者说所有pod工作在同一跨节点网络,此网络一般是二层虚拟网络,称为pod网络.在安装引导kubernetes时,由选 ...

  9. 计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动

    原文地址:4.计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动 计算机的启动

  10. linux shutdown 命令 关机 重启

    关机 shutdown -h now 重启 shutdown -r now