重学数据结构系列之——栈
2016-03-20 11:25
501 查看
1.栈
在以后的重学数据结构系列,为了废话没那么多,就不复制百度百科等的了。直接用自己的话来说。1.栈是什么
你就想象一个园桶,从上到下的直径都是一样的,我们向里面放入刚好能放入的圆碟,直到桶碟满,然而你只能从最上面的园碟开始拿。这就可以叫做栈最重要的是先进后出,First In Last Out(FILO)。
2.栈的实现
#include<iostream> #include<string> #include <cassert> using namespace std; template<class Type> class Stack{ private: Type *elements; int max_size, top_index; public: //构造函数 Stack(int length_input){ elements = new Type[length_input]; max_size = length_input; top_index = -1; } //析构函数 ~Stack(){ delete[] elements; } //入栈 bool push(const Type &element){ //是否超过栈容量 if (top_index >= max_size-1) { return false; } //栈顶向上移,并赋值 top_index++; elements[top_index] = element; return true; } //出栈 bool pop(){ //判断栈是否为空 if (top_index < 0) { return false; } //栈顶向下移 top_index--; return true; } //获取栈顶元素 Type top(){ assert(top_index >= 0); return elements[top_index]; //或者 //if (!empty()) { // return elements[top_index]; //}else{ // exit("there is no element"); //} } //判断栈是否为空 bool empty(){ if (top_index < 0) { return true; }else{ return false; } } }; int main() { int n; string str; cin >> n; Stack<string> stack(n); for (int i = 0; i < n; i++) { cin >> str; stack.push(str); } for (i = 0; i < n; i++) { cout<<stack.top()<<" "; stack.pop(); } cout<<endl; return 0; }
3.运行结果
4.小总结
可以看到,用栈进行一些翻转操作非常方便,逆序输出,数组的reverse等5.用程序判断出栈顺序是否可能
看我的下一篇文章:/article/9449674.html相关文章推荐
- 15 API-集合(Collection(功能,迭代器),List(List特有迭代器,并发异常),常见数据结构图示(栈,队列,数组,链表))&对象数组
- 【HDU5649 BestCoder Round 76 (div1)D】【二分+线段树】DZY Loves Sorting 全排列1~n 区间升序降序排序 最后k位置的数是几
- java数据结构排序之堆排序算法实现
- 从零开始_学_数据结构(一)——算法的基本概念
- 7-11-最短路径算法-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- Python中列表、字典、元组数据结构的简单学习笔记
- 数据结构中排序算法的总结
- 查看win10 内核数据结构
- 线性表的存储结构(顺序存储结构)
- 7-10-有向网关键路径-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- JavaScript数据结构——集合、字典和散列表
- JavaScript数据结构——栈和队列
- 每周数据结构【4】递归算法:把B树的所有左右节点进行交换
- JavaScript数据结构——数组
- 7-9-有向无环图拓扑排序-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构4——Java 二叉树 遍历
- hdu 4417(树状数组+离线算法)
- 7-8-无向图的关节点-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- 7-7-无向网的最小生成树-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构笔记-----查找