【C语言】栈演示(栈的几个函数)
来源:互联网 发布:美女秀场软件 编辑:程序博客网 时间:2024/06/04 01:25
/* * 栈演示(栈的几个函数) * */#include "text3.h" //多文件的时候需要将所有的函数声明都放在头文件里面, //结构体如果是公用的话也要写在头文件里面//栈的初始化函数//这个函数可以使一个不能用的栈可以用相当于初始化//通常将这个函数写在最前面void stack_init(stack *p_stack) { p_stack->num = 0;//初始化栈内个数}//栈清理函数,清理的是已经用过的栈//栈不用了进行清空,只是将下标归零void stack_deinit(stack *p_stack) { p_stack->num = 0;}//获得栈里数字//将当前位置的数据返回就可以int stack_size(const stack *p_stack) {// return p_stack->num;//返回num的值}//判断栈是不是放满了//满了话下标从最后一个有效地址变为后一个,也就是SIZE,这是越界的下标int stack_full(const stack *p_stack) { return p_stack->num >= SIZE;//如果栈满了,大于SIZE }//判断是不是空的函数//空的说明这个时候的num是0int stack_empty(const stack *p_stack) { return !(p_stack->num);//如果是空的返回1}//向栈里加入数字//这两个参数是数组所在结构体的地址和要放的数,都是形参,将要加入的数赋值给此时对应的下标的数组就可以了,在赋值之后下标会指向下一个位置int stack_push(stack *p_stack, int num) {//因为有可能加入不进去,所以可以用返回值来判断 if(stack_full(p_stack)) { return 0; } else { p_stack->arr[p_stack->num] = num; p_stack->num++; //这里位置不能交换,在赋值后再加1 return 1; }}//从栈里获得数字的函数(获取后从栈里删除) //这里说的获取后会删除的意思是当前指的这个位置之前已经取过了,当下次进行取值的时候会将下标减1指向上一个,把当前这个就跳过去也就是不再数组所存数据范围里了int stack_pop(stack *p_stack, int *p_num) {//这里获得数字后直接就放在指针所指的存储区里面了 if(stack_empty(p_stack)) {//判断如果栈不是空的才进行取值 return 0; } else{ p_stack->num--; //在没有进行这一步的时候,下标所对应的是一个不是有效值的存储区,也就是在栈里面每存一个数之后,指针指的是所存数据的下一个 *p_num = p_stack->arr[p_stack->num];//当下标减1指向数据的时候将值赋值给要给的存储区即可 return 1; }}//从栈里获得数字(获得后不会删除)int stack_top(const stack *p_stack,int *p_num) { if(stack_empty(p_stack)) { return 0; } else{ *p_num = p_stack->arr[p_stack->num-1];//这里的num不会变,因为const return 1; }}
阅读全文
0 0
- 【C语言】栈演示(栈的几个函数)
- 【C语言】队列演示(队列的几个函数)
- 数据结构之c语言栈的演示
- C语言的几个函数
- C语言栈的演示(入栈,弹栈,遍历)
- C语言正则表达式的几个函数
- 几个有意思的C语言小函数
- C语言正则表达式的几个函数
- 几个常用C语言函数的分析
- c语言文件的几个操作函数
- c语言编写几个重要的函数
- C语言几个常用的函数
- 几个常用C语言函数
- C语言几个小函数
- C语言的输入输出-几个函数的使用比较
- C语言字符串处理的几个常用函数
- C语言中常用的几个字符串处理函数:
- c语言中几个很有用的函数
- 多线程编程的优缺点
- Ceres(4):Modeling Non-linear Least Squares APIs(2)
- 邻接链表的构建
- 矩阵乘法
- Maven项目下WEB-INFO目录下没有编译的classes文件
- 【C语言】栈演示(栈的几个函数)
- HDU 3430 置换群 + 同余方程组
- HDU 3401 Trade(单调队列优化DP)【模板】
- 2017.08.07回顾
- 【BashuOJ1145】虚-组合数+求逆元
- 命令行编译运行从c,c++,java
- 导入导出Excel文件
- nodejs 构建本地web测试服务器 以及 解决访问静态资源的问题!有完整源码!
- React学习总结—生命周期