#include"stdio.h"
#include"stdlib.h"
#define STACK_SIZE 100
#define STACKINCREMENT 10
typedef struct{
int *base;
int *top;
int stacksize;
}Stack;
//初始化
int InitStack(Stack &S){
S.base=(int *)malloc(STACK_SIZE * sizeof(int));
if(!S.base)
return 0;
S.top=S.base;
S.stacksize=STACK_SIZE;
return 1;
}
//销毁
void DesStack(Stack &S){
S.top=S.base;
free(S.base);
S.base = NULL;
S.top = NULL;
S.stacksize = 0;
printf("1");
}
//置空
void ClearStack(Stack &S){
S.top=S.base;
}
//判空
bool StackEmpty(Stack &S){
if(S.base==S.top)
return true;
else
return false;
}
//长度
int StackLen(Stack &S){
return S.top - S.base;
}
//获取
int GetTop(Stack &S){
return *(S.top-1);
}
//进栈
int Push(Stack &S,int e){
if(S.top-S.base>=S.stacksize){
S.base = (int *)realloc(S.base,(S.stacksize + STACKINCREMENT)*sizeof(int));
if(!S.base) return 0;
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++=e;
return 1;
}
//删除栈顶
int Pop(Stack &S){
return *--S.top;
}
//输出
void StackTraverse(Stack &S){
int *p=NULL;
p=S.top;
while(p!=S.base){
p--;
printf("%d",*p);
}
}
void main(){
Stack S;
printf("初始化:");
printf("%d\n",InitStack(S));
printf("入栈");
Push(S,1);
Push(S,2);
Push(S,3);
Push(S,4);
Push(S,5);
printf("输出");
StackTraverse(S);
printf("长度");
printf("%d",StackLen(S));
printf("获取栈顶");
printf("%d",GetTop(S));
printf("删除并获取栈顶");
printf("%d",Pop(S));
printf("长度");
printf("%d",StackLen(S));
printf("判空");
StackEmpty(S);
printf("置空");
ClearStack(S);
printf("判空");
StackEmpty(S);
DesStack(S);

}

//定义宏时不能加分号

最新文章

  1. Datazen配置
  2. ORACLE 数据库需要创建索引的规则
  3. [New Portal]Windows Azure Virtual Machine (18) Azure Virtual Machine内部IP和外部IP
  4. Android ant自动打包脚本:自动替换友盟渠道、版本号、包名
  5. java中“@Deprecated”的意思
  6. jQuery升级踩坑大全
  7. css3属性flex弹性布局设置三列(四列)分布样式
  8. 练习用php做表格
  9. Relativelayout属性
  10. oracle之时间转换
  11. 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler
  12. .net mvc笔记3_Understanding Razor Syntax
  13. Source Insight使用技巧
  14. hibernate--联合主键--annotation
  15. Dora.Interception,为.NET Core度身打造的AOP框架 [3]:多样化拦截器应用方式
  16. jmeter实例介绍
  17. Tmux会话-基本操作及原理
  18. 关于.NET字符串驻留的问题
  19. linux的基本操作概览
  20. pt-table-checksum工具MySQL主从复制数据一致性

热门文章

  1. 编写高质量代码改善C#程序的157个建议——建议33:避免在泛型类型中声明静态成员
  2. 关于在审查元素中看到的::before与::after
  3. [转]FreeMarker使用
  4. CentOS7 yum安装lamp环境
  5. .NET&C#的异常处理
  6. IDEA的一些常用快捷键以及配置
  7. vmware实现物理机和虚拟机复制粘贴
  8. 【bzoj4709】[Jsoi2011]柠檬 决策单调性+dp
  9. [Swift]八大排序算法(四):堆排序
  10. PHP中使用CURL之php curl详细解析和常见大坑