栈
定义和应用
定义:栈(stack)是一种特殊的线性表,其插入(也称入栈或压栈)和删除(也称出栈或弹栈)操作都在表的同一端进行。这一端称为栈顶(top),另一端称为栈底(bottom)。从定义可知,栈是个后进先出(LIFO)的表。
C++标准类模板库(STL)中的栈的功能:
template<class T>
class stack
{
public:
virtual ~stack() {}
virtual bool empty() const=0;//返回true,当且仅当栈为空
virtual int size() const=0;//返回栈中元素个数
virtual T& top() =0;//返回栈顶元素的引用
virtual void pop() =0;//删除栈顶元素
virtual void push(const T& theElement() =0;//将元素theElement压入栈顶
};
队列
定义和应用
定义:队列(queue)是一个线性表,其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾(back或rear),删除元素的那一端称为队首(front)。从定义可知,队列是个先进先出(FIFO)的表。
C++标准类模板库(STL)中的队列的功能:
template<class T>
class queue
{
public:
virtual ~queue() {}
virtual bool empty() const=0;//返回true,当且仅当队列为空
virtual int size() const=0;//返回队列中元素个数
virtual T& front() =0;//返回头元素的引用
virtual T& back() =0;//返回尾元素的引用
virtual void pop() =0;//删除首元素
virtual void push(const T& theElement) =0;//把元素theElement加入队尾
};
如果是一个环形队列,则可用下面公式求i的位置:
location(i)=(location(队列首元素)+i)%arrayLength
当且仅当queueFront=queueBack时,队列为空。初始条件queueFront=queueBack=0定义了一个初始为空的队列。