C语言实现栈代码
/*
栈的特性:先进后出。
栈在计算语言处理和将递归算法改为非递归算法等方面起着非常重要的作用。
*/ #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语言实现栈代码的更多相关文章
- C语言函数调用栈(二)
5 函数调用约定 创建一个栈帧的最重要步骤是主调函数如何向栈中传递函数参数.主调函数必须精确存储这些参数,以便被调函数能够访问到它们.函数通过选择特定的调用约定,来表明其希望以特定方式接收参数.此外, ...
- C语言函数调用栈
C语言函数调用栈 栈溢出(stack overflow)是最常见的二进制漏洞,在介绍栈溢出之前,我们首先需要了解函数调用栈. 函数调用栈是一块连续的用来保存函数运行状态的内存区域,调用函数(calle ...
- 【伯乐在线】最值得阅读学习的 10 个 C 语言开源项目代码
原文出处: 平凡之路的博客 欢迎分享原创到伯乐头条 伯乐在线注:『阅读优秀代码是提高开发人员修为的一种捷径』http://t.cn/S4RGEz .之前@伯乐头条 曾发过一条微博:『C 语言进阶有 ...
- VS2015提示:未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用。服务器控件的标记Intellisense可能不起作用
一.问题 最近在VS2015打开文件,提示未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用.服务器控件的标记Intellisense可能不起作用. Int ...
- 小C和小派的缠绵爱情——C语言调用Python代码
我妒忌你的开源,你眼红我的速度,不如我们就在一起吧! --------SJ2050 2019.4.9号更新:实现在未安装python环境的机子上运行调用了python程序的C语言代码! 文章目录 环境 ...
- 《Linux内核分析》week1作业-分析一个简单c语言的汇编代码
1.C语言源码 #include <stdio.h> int g(int x){ ; } int f(int x){ return g(x); } int main(){ )+; } 2. ...
- 4-29 c语言之栈,队列,双向链表
今天学习了数据结构中栈,队列的知识 相对于单链表来说,栈和队列就是添加的方式不同,队列就相当于排队,先排队的先出来(FIFO),而栈就相当于弹夹,先压进去的子弹后出来(FILO). 首先看一下栈(St ...
- 数据结构(c语言版)代码
第1章 绪论 文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲01 绪论 概述 第一章作为绪论,主要介绍了数据结构与算法中的一些基本概念和术语.对于这些概念术语 ...
- C语言数据结构-栈
一.栈的定义 栈(statck)这种数据结构在计算机中是相当出名的.栈中的数据是先进后出的(First In Last Out, FILO).栈只有一个出口,允许新增元素(只能在栈顶上增加). 移出元 ...
随机推荐
- ping命令介绍
1.ping是TCP/IP协议的一部分,所以只要安装了TCP/IP协议就(无论windows或linux)都可以使用ping命令. 2.ping命令的原理:本机创建一个数据包发送给(ping对象)目标 ...
- Dart学习笔记-变量常量数据类型
变量和常量 1.变量的定义 main() { var t_str = 'hello world'; var t_num = 123456; String t_str2 = '你好,我很高兴'; int ...
- Java学习之==>IO文件操作体系
一.概述 在整个 Java.io 中最重要的就是5个类和一个接口.5个类指的是 File.InputStream.OutputStream.Reader.Writer,一个接口指的是Serializa ...
- delphi数组如何初始化
https://wenda.so.com/q/1535561587217078delphi数组如何初始化rosegirl09112级分类:其他被浏览44次2018.07.01检举满意答案 csx330 ...
- Day02:变量 / JAVA基本类型
变量 什么是变量? 变化数值的载体 变量声明.初始化.使用 声明变量 类型 大小(占用空间) int x; 初始化变量 (赋值) 给予占用空间 int x=35; 使用变量 直接使用变量名 注意: ...
- 【JAVA系列】Google爬虫如何抓取JavaScript的?
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[JAVA系列]Google爬虫如何抓取Java ...
- 【转载】ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
转载出处 在网上下载了一个免安装包的MySQL,准备自己create database jhp_test,使用的时候出现报错,如下: ERROR (): Access denied for user ...
- vue --》路由query 编程式导航传值与监听
1.首先在一个页面设置一个按钮,用于路由跳转 <template> <div> <button @click="handleToRouter"> ...
- 引用dll出现了黄色感叹号
今天引用一个dll的时候出现了一个小感叹号,重新生成也无济于事,如下图 原因是,被引用的项目使用的是.NET2.0版本,而当前项目使用的是.NET3.5版本,所以出现了错误 解决办法把当前项目和引用项 ...
- 小程序图片预览 wx.previewImage
list: [ 'http://img5.imgtn.bdimg.com/it/u=3300305952,1328708913&fm=26&gp=0.jpg', 'http://i ...