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

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

栈 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{
private:
    int maxSize;
    int top;//当前栈顶元素在数组中的位置
    E *lisArray;
    ...........
}

push:图例
对数据结构一点一小小的理解(五)——栈_第1张图片

pop:图例
对数据结构一点一小小的理解(五)——栈_第2张图片

Linked Stack(链式栈)

Template <typename E>
class LStack:public Stack<E>{
private:
    Link<E>* top;
    int size;
    ......
}

未完待续


以上是个人对这一部分的一点小小的理解。如有问题欢迎指正,在此感谢您对我的支持。联系方式:[email protected]

你可能感兴趣的:(浅析-数据结构与算法)