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