栈——数组实现
来源:互联网 发布:plc编程教程百度网盘 编辑:程序博客网 时间:2024/05/17 03:14
引言:
使用链表实现栈存在“对malloc和free的调用开销昂贵”的缺点,特别是与指针操作的例程相比尤其如此。利用数组实现栈可以避免了指针。但它的缺点是可能存在空间的浪费。
分析描述:
数组栈的结点元素。
#ifndef ERROR#define ERROR (0)#endif#ifndef OK#define OK(!ERROR)#endif#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedefint SElemType;typedef struct SqStack{SElemType*base;SElemType*top;intstacksize;}SqStack, *pStack;pStack S;
栈的初始化。
pStack InitStack(pStack S){S = (pStack)malloc(STACK_INIT_SIZE * sizeof(SElemType));if(S == NULL){return ERROR;}S->base = (SElemType *)S;S->top = S->base;S->stacksize = STACK_INIT_SIZE;return S;}
入栈操作。
pStack Push(pStack S, SElemType e){if((S->top - S->base) >= S->stacksize){S->base = (SElemType *)realloc(S, (S->stacksize + STACKINCREMENT)*sizeof(SElemType));if(S->base == NULL)return ERROR;S->top = S->base + S->stacksize;S->stacksize += STACKINCREMENT;}*S->top++ = e;return S;}
出栈操作。
SElemType Pop(pStack S){if(S->top == S->base)return 0;return *(--S->top);}
取栈顶元素。
SElemType GetTop(pStack S){if(S->top == S->base)return ERROR;return *(S->top - 1);}
求栈的长度。
int GetLength(pStack S){int length = 0;if(S->top == S->base)return 0; pStack Tmp = S;while(Tmp->top-- != Tmp->base)length++;return length;}
0 0
- 栈——数组实现
- 栈——数组实现
- 栈的实现—由数组实现
- 利用数组实现数据结构——栈
- 栈—数组与链表实现
- 队列——数组实现
- 链表——数组实现
- 循环队列—数组实现
- 队列的实现—由数组实现
- 栈的实现——链表和数组
- 栈的实现——链表和数组
- JAVA基础训练——用数组实现栈的功能
- Java实现——判断数组出栈顺序
- 数据结构—数组实现两个栈,不上溢
- 约瑟夫环问题——数组实现
- 大数乘法——数组实现
- 栈的数组实现
- 用数组实现栈
- ECshop中TemplateBeginEditable 和后台编辑讲解
- S-Nim
- 使用Unity3D开发项目的一点经验
- 让自己的apk可以被别人用二维码下载
- 想留出了F-R-I-E-N-D区
- 栈——数组实现
- 基于Android/机顶盒/pc高质量视频通话及手机直播源码转让
- Hibernate主键生成策略总结
- cocos2d-x3.0 新的物理引擎之详解setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()
- 成都PHP培训机构哪家好?
- bug-->oops-->pannic
- 【JS练习1】图片切换(包括注释)
- struts2 三种方法与Servlet API 的交互详解
- SSH2整合Ralasafe配置过程问题汇总