通用堆栈c语言版本(可以适应任何类型)
2016-04-27 14:12
351 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> #define OK 0; #define ERROR -1 #define OVERFLOW -2 #define YES 1 #define NO 0 #define STACK_INIT_SIZE 100 #define STACK_INCREMENT 10 typedef int Status; typedef int TElemType; typedef BiTreeLk SElemType; typedef struct { SElemType *base; SElemType *top; int stacksize; }SqStack; //初始化栈 Status InitStack(SqStack &S) { S.base = (SElemType *)malloc(sizeof(SElemType)*STACK_INIT_SIZE); if(!S.base) exit(OVERFLOW); S.top = S.base; S.stacksize = STACK_INIT_SIZE; } //得到栈顶元素 Status GetTop(SqStack &S,SElemType &e) { if(S.top==S.base) return ERROR; e = *(S.top-1); return OK; } //压栈 Status Push(SqStack &S,SElemType e) { if(S.top-S.base>=S.stacksize) { S.base= (SElemType *)realloc(S.base, sizeof(SElemType)*(S.stacksize+STACK_INCREMENT)); if(!S.base) return ERROR; S.top = S.base+S.stacksize; S.stacksize += STACK_INCREMENT; } *S.top++ = e; return OK; } //出栈 Status Pop(SqStack &S,SElemType &e) { if(S.top==S.base) return ERROR; S.top--; e = *S.top; return OK; } Status StackEmpty(SqStack &S) { if(S.base == S.top) return YES; return NO; }
相关文章推荐
- C++入门一
- c++ 一些笔试题
- c++内存对齐问题
- C++基本的输入输出
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- C语言下的函数递归调用
- C++单向链表之合并链表
- C++内存管理
- 基本路径测试
- c++第四次作业
- INTEL C/C++ COMPILER
- C++多态基础(polymorphism)
- 【VS开发】C++ opencv Mat基础
- 最近的两个小项目,1:在Vscode里写C/C++
- c语言学习之数组指针
- C++11 新特性:模板别名
- C++使用stringstream进行数据类型转换
- C++作业4
- C语言杂谈(三)存储类别
- C++统计代码注释行数 & 有效代码行数 & 代码注释公共行 & 函数个数