数据结构之栈(一)--顺序栈
来源:互联网 发布:c语言文件打开方式 编辑:程序博客网 时间:2024/05/16 08:50
//顺序栈的实现#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define OK 1#define ERROR 0#define STACK_INIT_SIZE 100 //储存空间初始分配量#define STACKINCREASE 10 //储存空间分配增量typedef int SElemType;//定义栈中元素类型typedef int Status;typedef struct{ SElemType *base;//基指针,指向栈底 SElemType *top;//栈顶指针 int stacksize;//栈的容量}Stack;//定义一个栈Status InitStack(Stack &S)//初始化一个空栈{ S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if(!S.base)exit(-2); S.top = S.base; S.stacksize = STACK_INIT_SIZE; return OK;}Status Push(Stack &S, SElemType &e)//进栈{ if(S.top - S.base >= S.stacksize)//判断是否满栈,若满栈,则重新分配增量空间 { S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREASE) * sizeof(SElemType)); if(!S.base)exit(-2); S.top = S.base + S.stacksize; S.stacksize += STACKINCREASE; } *S.top++ = e; return OK;}Status Pop(Stack &S, SElemType &e){ if(S.top == S.base) return ERROR; e = *(S.top - 1); S.top--; return OK;}bool Is_empty(Stack &S){ if(S.top == S.base) return true; else return false;}Status GetTop(Stack &S,SElemType &e){ if(S.top == S.base) return ERROR; e = *(S.top - 1); return OK;}int main(){ Stack S; SElemType e1,e2,e3; e1 = 2; InitStack(S); Push(S,e1); Pop(S,e2); printf("%d\n",e2); printf("%d\n",Is_empty(S)); Push(S,e1); GetTop(S,e3); printf("%d",e3);}
阅读全文
1 0
- 数据结构之栈(一)--顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构之顺序栈
- 数据结构学习之顺序表(一)
- 数据结构之顺序表(一)
- 数据结构栈之顺序栈
- 数据结构之顺序栈实现
- 数据结构笔记之顺序栈
- 数据结构之顺序栈SqStack
- java反射:数据类型及返回值对应的类类型以及Class类的基本API
- Python读取串口
- 如何遍历删除一个list中的特定数据
- postgreSQL与MySQL的比较
- Linux中解除端口占用
- 数据结构之栈(一)--顺序栈
- git笔记
- 系统软件开发平台
- 如何写出简洁、优雅、可维护的组件。
- [MSSQL]SQL Server中的RAND函数的介绍和区间随机数值函数的实现
- 单例模式
- java的object类详解
- OpenCV2.4.4中调用SIFT特征检测器进行图像匹配
- 中缀表达式转化为后缀表达式