c语言顺序栈的表示和实现
来源:互联网 发布:网络运营者为用户 编辑:程序博客网 时间:2024/05/16 04:40
#define STACK_INIT_SIZE 100//初始大小(100个数据长度)#define STACKINCREMENT 10//栈的分配增量typedef int ElemType;//栈储存的数据类型typedef enum {ERROR = 0,OK = 1}Status;//枚举返回函数运行结果typedef struct {ElemType *base;//栈底指针,指向malloc分配的内存ElemType *top;//栈顶指针,初始值指向栈底,出栈top--,入栈top++,指向栈顶元素的后一位置。int stacksize;//当前栈可储存的数据的最大长度}SqStack;Status InitStack(SqStack &s) {s.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));//为栈顶指针分配内存if (!s.base){printf("内存分配失败");exit(0);}s.top = s.base;s.stacksize = STACK_INIT_SIZE;//当前栈可储存的数据的最大长度为初始分配长度return OK;}Status GetTop(SqStack s, ElemType &e) {if (s.base == s.top){printf("空栈");return ERROR;}e = *(s.top - 1);//top指针指向的内存的前一个为栈顶return OK;}Status Push(SqStack &s, ElemType e) {if (s.stacksize<=s.top - s.base)//超过当前最大长度,增加内存。{s.base = (ElemType *)realloc(s.base,(STACKINCREMENT+s.stacksize)* sizeof(ElemType));if (!s.base){printf("分配失败");exit(0);}s.top = s.base + s.stacksize;//没啥用?s.stacksize += STACKINCREMENT;}*(s.top++) = e;return OK;}Status Pop(SqStack &s, ElemType &e) {if (s.base==s.top){printf("空栈");return ERROR;}e = *(--s.top);return OK;}
阅读全文
0 0
- c语言顺序栈的表示和实现
- 线性表的顺序表示和实现(C语言描述)
- 数组的顺序表示和C语言实现
- [C语言][数据结构]基础的线性表的顺序表示和实现
- C语言数据结构——数组顺序存储结构的实现和表示
- 数据结构---C语言之队列的顺序表示和实现(循环队列)
- C语言 数组的顺序表示与实现 数据结构
- 线性表的顺序表示(C语言实现)
- 线性表的顺序表示及实现(C语言编写)
- C语言实现顺序线性表的表示、插入、删除
- C语言 栈的线性表示和实现 栈的实现和表示
- 顺序栈的表示和实现
- 顺序栈的表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现(数据结构)
- 栈的顺序表示和实现
- jsp页面0以Integer类型传到后台的坑 mybatis 框架时 ,别的不知道
- 字符串分割放入字典
- Java——Stream简单使用
- Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) B. T-Shirt Hunt(模拟)
- HTTP访问的两种方式
- c语言顺序栈的表示和实现
- 性能测试之场景设计
- 一定一自适应:左定宽,右自适应;左自适应,右定宽
- Lua API 小记——— lua值, 栈解释
- Java Synchronized 详解
- XML和XML schema
- Java虚拟机(二):GC垃圾收集器与内存分配策略
- HTML5和HLS协议两种技术完美结合解决移动端网页播放问题
- 基于SSM框架的多文件上传Controller类编写