C语言模拟栈
来源:互联网 发布:淘宝简约店招 编辑:程序博客网 时间:2024/06/09 16:56
头文件:
#include<stdlib.h>#include<stdio.h>#include<memory.h>#define N 100struct stack{int a[N];int top;//标识栈顶};//起别名typedef struct stack Stack;//因为有副本机制,所以这儿使用地址。void init(Stack *p);//初始化栈int isempty(Stack *p);//判断栈是否为空int isfull(Stack *p);//判断栈是否满int gettop(Stack *p);//获取栈顶void push(Stack *p,int key);//进栈void pop(Stack *p);//出栈void show(Stack *p);//显示栈的所有数据
stack.c main函数:
#include"stack.h"//栈的初始化void init(Stack *p){p->top = -1;//-1代表为空//第一个数组的地址,第二个要复制的数据,第三个数据的大小memset(p->a, 0, sizeof(int)*N);//初始化数组的大小,并全部初始化为 0}//判断栈是否为空int isempty(Stack *p){if (p->top == -1){return 1; //为空}else{return 0;//不为空}}// 判断栈是否满int isfull(Stack *p){if (p->top == N-1){return 1;//溢出}else{return 0;//没有溢出}}//得到栈顶的值int gettop(Stack *p){return p->a[p->top];}//进栈,key 为进栈的值void push(Stack *p, int key){//栈顶加1后判断栈是否满if (isfull(p)){printf("栈溢,无法进栈!");return;}else{//得到栈顶加 1p->top = p->top + 1;//进栈p->a[p->top] = key;}}void pop(Stack *p){//判断栈是否为空if (isempty(p)){printf("栈为空,不能出栈!");return;}else{printf("%d\n", p->a[gettop(p)]);p->top = p->top - 1;}}//显示栈的所有数据void show(Stack *p){while (!isempty(p)){printf("%3d", p->a[p->top]);p->top -= 1;}}void main(){Stack stack;//初始化init(&stack);for (int i = 0; i < 5; i++){push(&stack,i);}show(&stack);system("pause");}
0 0
- C语言模拟栈
- C语言模拟栈存储结构笔记
- c语言,电梯模拟
- c语言模拟时钟
- C语言模拟示波器
- C语言模拟IIC
- C语言模拟按键
- 【C语言】 模拟计算器
- C语言模拟海战
- 模拟ATM(C语言)
- c语言模拟停车场
- C语言模拟C++list
- 用C语言模拟下雨
- C语言中的类模拟
- C语言中的类模拟
- C语言 离散事件模拟
- c语言模拟小球落地
- c语言模拟扫雷小游戏
- 一步一步分析新建App启动过程
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- GDB调试手册
- Codeforces 650B Image Preview 【二分】
- Oracle中数据类型number(m,n)
- C语言模拟栈
- c/c++基础
- Magento使用手机号注册登录开发过程
- 代码复用 -- 组合和继承
- tableViewcell的左滑动显示删除置顶更多的效果
- 《how to write and publish a scientific paper》 Chapter 4
- Android开发中使用dos命令连接外接设备device运行android项目
- SVM算法
- 第2周项目 拿胖子说事计算标准体重