对数据结构一点一小小的理解(五)——栈
2017-05-13 21:19
253 查看
作为一位大三的学生,近期在复习《数据结构与算法》这本教材;以下是我对复习内容的一点小小的理解,只是个人的部分观点,如有错误给您带来不便请您谅解
LIFO:Last in,First Out 先进后出
例子:洗一坨碗:洗一个摞一个,最后放上去的碗,第一个拿出来使用,最先洗的碗由于他在最下面,所以最后使用(先进后出)也就是为什么说限制了插入和删除的位置
为了和一般的线性表区分开,插入和删除有了几个特殊的概念:
插入 insert:push 入栈(压进来)
删除 remove:POP 出栈(弹出去)
Stack ADT
基于数组的栈
push:图例
![](https://img-blog.csdn.net/20170515154842155?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRnJhbmtsaW5iaWxs/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
pop:图例
![](https://img-blog.csdn.net/2017051<br/>4000<br/>5155006094?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRnJhbmtsaW5iaWxs/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
Linked Stack(链式栈)
栈 Stacks
栈:限制了插入和删除的位置,插入与删除只在其一端进行LIFO:Last in,First Out 先进后出
例子:洗一坨碗:洗一个摞一个,最后放上去的碗,第一个拿出来使用,最先洗的碗由于他在最下面,所以最后使用(先进后出)也就是为什么说限制了插入和删除的位置
为了和一般的线性表区分开,插入和删除有了几个特殊的概念:
插入 insert:push 入栈(压进来)
删除 remove:POP 出栈(弹出去)
Stack ADT
template <typename E> class Stack { public: virtual void clear() = 0; virtual void push(const E& it) = 0; virtual E pop() = 0; virtual const E& topValue() const = 0; virtaul int length() const = 0; };
基于数组的栈
template <typename E> class Astack:public Stack<E>{ private: int maxSize; int top;//当前栈顶元素在数组中的位置 E *lisArray; ........... }
push:图例
pop:图例
Linked Stack(链式栈)
Template <typename E> class LStack:public Stack<E>{ private: Link<E>* top; int size; ...... }
未完待续
以上是个人对这一部分的一点小小的理解。如有问题欢迎指正,在此感谢您对我的支持。联系方式:994771138@qq.com相关文章推荐
- 对数据结构一点一小小的理解(七)——二叉树
- 对数据结构一点一小小的理解(三)——C++ 模板库
- 对数据结构一点一小小的理解(四)——线性表
- 对数据结构一点一小小的理解(二)——算法分析部分
- 对数据结构一点一小小的理解(一)
- AngularJS』一点小小的理解
- 分页机制,一点小小的理解,os 于渊的树上的
- 对m_hWnd和this指针的一点小小理解
- c++继承和多态的一点小小的理解
- 『AngularJS』一点小小的理解
- 数据结构之于开发过程的一点理解
- 『AngularJS』一点小小的理解
- 数据结构之于开发过程的一点理解
- Quartz 一点小小的理解
- 数组指针和指针数组的一点小小理解
- spring的一点小小理解
- window消息机制的一点理解
- c#构造器的一点理解(一)
- 关于特性和类的一点理解
- 侧滑菜单的一点小小的总结