您的位置:首页 > 理论基础 > 数据结构算法

对数据结构一点一小小的理解(五)——栈

2017-05-13 21:19 253 查看
作为一位大三的学生,近期在复习《数据结构与算法》这本教材;以下是我对复习内容的一点小小的理解,只是个人的部分观点,如有错误给您带来不便请您谅解

栈 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: