堆栈的定义和实现
来源:互联网 发布:网络菜市场 编辑:程序博客网 时间:2024/05/22 00:54
**
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
**
代码实现:
/*数据结构:stack (数组实现)功能:push // 进栈 void push (const Type& val); pop //出栈 void pop(); top //返回栈顶元素 const_reference& top() const; size //返回栈大小 size_type size() const; empty //判断栈是否为空 bool empty() const;/*********附加功能(未实现)**********//* emplace //在堆栈的顶部添加一个新元素(类似push,但避免了构造临时对象) swap //交换容器内容*/#include <iostream>#include <cstdlib>template <typename Type>class Stack{public:Stack(){ S=new Type[MAX_Stack]; Size=-1; Push=0; Pop=0;// std::cout<<"栈已构造完毕"<<std::endl;}~Stack(){ delete[] S;// std::cout<<"栈已析构"<<std::endl;}void push(const Type& val){ if(Size<MAX_Stack-1) S[++Size]=val; else { upstepStack(); push(val); }}void pop(){ if(!empty()) { std::cout<<"栈为空强制退出"<<std::endl; exit(0); } else Size--;}Type& top()const{ if(!empty()) { std::cout<<"栈为空强制退出"<<std::endl; exit(0); } else return S[Size];}int size() const{ return Size;}bool empty() const{ if(Size==-1) return false; else return true;}void upstepStack(){ Type *temp = S; MAX_Stack+=increment; S = new Type[MAX_Stack]; for(int i = 0;i<Size;i++) S[i] = temp[i]; delete[] temp;}private: Type *S; int Size; int Push; int Pop; int MAX_Stack=50; const int increment=20;};
阅读全文
0 0
- 堆栈的定义和实现
- 数据结构之堆栈8定义的实现
- 堆栈和队列的实现
- 堆栈和队列的实现
- 堆栈计算机的原理和实现
- 用双链表实现的堆栈和队列
- 堆栈的链式表示和实现
- 堆栈和队列的java实现
- javascript实现堆栈和简单的应用
- 关于树的队列实现和堆栈实现的分析
- 协议的定义和实现
- 【复数】的定义和实现
- 【有理数】的定义和实现
- 栈的定义和实现
- 图的深度优先遍历(堆栈实现和非堆栈实现)
- 图的深度优先遍历(堆栈实现和非堆栈实现)
- 图的深度优先遍历(堆栈实现和非堆栈实现)
- 图的深度优先遍历(堆栈实现和非堆栈实现)
- 将Visual Studio安装项目中将用户选择的安装路径写入注册表的方法
- CGFloat格式化
- RSA分段加密
- 8.8日联赛解题报告(前两题)
- JAVA常用API
- 堆栈的定义和实现
- 【02】带你一分钟理解闭包--js面向对象编程
- change mode(chmod)小结
- bzoj 1023: [SHOI2008]cactus仙人掌图
- libx264预设类参数详解
- log4j的配置文件介绍
- 分数拆开
- bzoj3620: 似乎在梦中见过的样子
- 回文子序列个数 C++