数据结构之队列和栈学习笔记
2016-04-30 22:39
211 查看
这两天学习了队列和栈(当然还有哈希表,不过暂且不表),由于队列与栈的类似性故放在一块讲。
队列和栈与链表不一样在于其强调的不是存储单元间的关系而是存储后数据流动的一种形式,队列和栈恰好相互对应,一个是先进先出,一个是先进后出。一张图便能轻易掌握这两种数据结构的特点。说白了栈就像个桶,而队列就像个带开关的漏斗。
废话不多说,直接上代码,以栈为例,通过栈1.0版来看栈的建立以及一些基本操作。队列则可举一反三得到。
其中在学习的时候多出模板类的定义,这样在选择入栈的数据类型时也较Typedef更为方便。
代码依旧很简单,初级也很容易看懂,里面以数组为载体定义了出栈入栈判断是否为空以及得栈顶元素的基本功能,实现方式可能还有大的改善空间,不过也基本够用了…
继续 ps:如有不对的地方望广大高手批评指点。。。
队列和栈与链表不一样在于其强调的不是存储单元间的关系而是存储后数据流动的一种形式,队列和栈恰好相互对应,一个是先进先出,一个是先进后出。一张图便能轻易掌握这两种数据结构的特点。说白了栈就像个桶,而队列就像个带开关的漏斗。
废话不多说,直接上代码,以栈为例,通过栈1.0版来看栈的建立以及一些基本操作。队列则可举一反三得到。
#include<iostream> #include<cassert> //提供assert using namespace std; template<class Type> class Stack{ private: Type* data; int size,top_index; public: Stack(int input_length){ data = new Type[input_length]; size = input_length; top_index=-1; } ~Stack(){ delete[] data;} bool insert(const Type &value){ if(top_index<size-1){ data[++top_index]=value; return true; } else{ return false;} } bool pop(){ if(isempty()){ return false;} else{ top_index--; return true; } bool isempty(){ if(top_index<0){ return true; } else { return false;} } Type top(){ assert(top_index>=0); return data[top_index]; } };
其中在学习的时候多出模板类的定义,这样在选择入栈的数据类型时也较Typedef更为方便。
代码依旧很简单,初级也很容易看懂,里面以数组为载体定义了出栈入栈判断是否为空以及得栈顶元素的基本功能,实现方式可能还有大的改善空间,不过也基本够用了…
继续 ps:如有不对的地方望广大高手批评指点。。。
相关文章推荐
- [数据结构]Priority_queue(优先级队列)
- [数据结构]Radix_sort(MSD)
- 数据结构与逻辑代码(一)
- 数据结构(c)——二叉树
- BZOJ 1208 平衡树Treap模版题
- Python全栈开发之2、运算符与基本数据结构
- HDU 4747 线段树+思维
- 数据结构相同情况下数据表之间数据的快速"copy"
- C++数据结构
- 数据结构-Trie树
- 查找 -数据结构
- 查找 -数据结构
- 数据结构修改后,序列化到本地的数据读取错误
- 【数据结构与算法】十五 平衡二叉树
- Java千百问_06数据结构(002)_java有哪8种基本数据类型
- Java千百问_06数据结构(001)_java中数据类型是什么
- springmvc中的RequestBody自动注入List, Map, String数据结构的数据
- 链表的倒序打印
- poj 初级训练计划数据结构总结
- 一、hbase的核心数据结构