#include<stdio.h>
#include<stdlib.h>
#define initsize 100
#define ok 1
#define error 0
typedef int Status;
typedef char ElemType;
typedef struct{
ElemType *base;
ElemType *top;
int stacksize;
}SqStack;
static SqStack *S;
Status InitStack(SqStack *S){
S->base=(ElemType *)malloc(initsize*sizeof(ElemType));
if(!S->base){
printf("分配内存失败!");
exit(error);
}
S=->top=S->base;
S->stacksize=initsize;
return ok;
}
Status StackEmpty(SqStack *S){
  if(S->base==S->top){
  return true;
  }else{
  return false;
}
}
Status DestroyStack(SqStack *S){
  free(S->base);
  return 0;
}
Status ClearStack(SqStack *S);
Status StackEmpty(SqStack *S);
Status StackLength(SqStack *S);
Status GetTop(SqStack *S,ElemType e){
if(S->top!=S->base){
e=*(S->top-);//非空栈的栈顶指针始终在栈顶元素的下一个位置
}
return e;
} Status Push(SqStack *S,ElemType e){
if(S->top-S->base>=initsize){
S->base=(ElemType *)realloc(S->base,(initsize+)*sizeof(ElemType))
if(!S->base){
printf("内存分配失败");
exit(error);
}
S->stacksize+=;
S->top=S->base+S->stacksize;//此处的initsize为没有重新分派的initsize因为分配了空间不代表着top就要指向最顶
}
*S->top++=e;
return ok;
}
Status Pop(SqStack *S,ElemType *e){
if(S->top!=S->base){
S->top--;
e=*S->top;
return ok;
}else{
return error;
}
}
Status StackTraverse(const SqStack *S){
int *p;
if(S->base==S->top){
exit(error);
}else{
for(p=S->base;p<S->top;p++){
printf("%c \n",*p);
}
}
}
void main(){
int m;
InitStack(S);
printf("请输入一个入栈元素\n",&m);
Push(S,m);
StackTraverse(S);
}

最新文章

  1. nagios检测http
  2. Poj 1276 Cash Machine 多重背包
  3. Java数据结构之字符串模式匹配算法---KMP算法2
  4. POJ 3254 Corn Fields(状态压缩DP)
  5. Spring工厂方式创建Bean实例
  6. hdu 5437 Alisha’s Party 优先队列
  7. STL之deque、queue、stack、list
  8. OSI七层模型详解
  9. 指定路径下建立Access数据库并插入数据
  10. HTML页面中JavaScript能获取到的各种屏幕大小信息
  11. 一些有用的Java参考资料
  12. spring整合mybatis,批量扫描mapper接口出现异常
  13. 第五章 服务容错保护:Spring Cloud Hystrix
  14. onceAgain, 这是一个py群的群公告说明
  15. 【消息队列】RabbitMQ+PHP实现
  16. page.isvalid
  17. [转]jQuery中clone和clone(true)的区别
  18. Python的静态方法和类成员方法
  19. 解决AttributeError: &#39;Ui_MainWindow&#39; object has no attribute &#39;show&#39;报错
  20. C 标准库 - string.h之memcpy使用

热门文章

  1. Android模拟器访问本机服务器
  2. Sublime Text加上Eclipse
  3. Windows 下推荐软件
  4. C++程序设计基础(8)main函数
  5. Machine Learning的定义
  6. IO流之File类
  7. Django组件——forms组件
  8. win10下clodeblocks编译C语言乱码
  9. .NET开源工作流RoadFlow-表单设计-日期时间选择
  10. Oracle运行依赖的服务