栈的实现
来源:互联网 发布:孙兴慜数据 编辑:程序博客网 时间:2024/04/28 02:14
顺序栈是利用一组地址连续的存储单元依次存放自栈低到栈顶的数据元素,利用指针top、bottom指示栈顶和栈底元素在顺序栈中的位置。
实现方式:先为栈分配一个合理的栈容量、在使用的过程中当栈的空间不够用时再逐段扩大。
代码实现:
//2015.01.08 顺序栈的实现#include "iostream"using namespace std;#include "malloc.h"#define TYPEint#defineINCREMENT_SIZE4typedef struct _Stack {unsigned int size;TYPE* top;TYPE* bottom;}Stack;void init_stack(Stack* stack);void push(Stack* stack,TYPE val);TYPE pop(Stack* stack);void traverse(Stack* stack);int main(void){Stack stack;init_stack(&stack);push(&stack,1);push(&stack,2);push(&stack,3);push(&stack,4);push(&stack,5);push(&stack,6);push(&stack,7);push(&stack,8);//cout<<pop(&stack)<<endl;//cout<<pop(&stack)<<endl;//cout<<pop(&stack)<<endl;//cout<<pop(&stack)<<endl;traverse(&stack);return 0;}//初始化栈void init_stack(Stack* stack){stack->size = INCREMENT_SIZE;stack->top = stack->bottom = new TYPE[INCREMENT_SIZE];if(NULL == stack->top){exit(-1);}}//压栈void push(Stack* stack,TYPE val){int i = stack->top-stack->bottom;if(stack->top-stack->bottom >=stack->size)//判断是否扩展栈的容量{int new_size = stack->size+ INCREMENT_SIZE;//栈新的容量大小stack->bottom = (TYPE*)realloc(stack->bottom ,new_size*sizeof(TYPE));//为新栈分配内存空间并将原栈中内容拷到新的栈中if(NULL == stack->bottom){exit(-1);}stack->top = stack->bottom + stack->size;stack->size = new_size;*(stack->top++) = val;}else{*(stack->top++) = val; }}//出栈TYPE pop(Stack* stack){TYPE val;if(stack->top == stack->bottom){cout<<"栈为空,出栈失败"<<endl;exit(-1);}else{val = *(--stack->top); return val;}}//遍历栈void traverse(Stack* stack){if(stack->top == stack->bottom){cout<<"栈为空,遍历栈失败"<<endl;}else{while(stack->top != stack->bottom){cout<<*(--stack->top)<<endl;}}}
0 0
- 栈的顺序实现
- 栈的数组实现
- 栈的指针实现
- 栈的实现
- 栈的实现
- 顺序栈的实现
- 栈的实现
- 链栈的实现
- 栈的C++实现
- 栈的实现
- 栈的宏实现
- 栈的实现
- 顺序栈的实现
- 链栈的实现
- 栈的链式实现
- 链式栈的实现
- 用链表实现的栈
- 栈的简单实现
- php输出xml必须header的解决方法
- Unity脚本,平滑跟随目标物体移动和旋转
- 关于<a>标签的 的target属性
- 黑马程序员——Java语言基础下篇
- Matlab 文件读写(I/O)和字符串操作常用命令
- 栈的实现
- FoodsMenu新出美食軸功能手機超炫Food
- java 異常(二)
- OJ循环——迭代法求方程的根
- java 读取properties文件中的属性
- 史上最全系列之开发环境搭建之DEBUG
- 十进制转化为二进制
- ios 小知识
- 1501091229-蓝桥杯-基础练习 01字串