template<class T, int DEFAULT_CAPACITY = 0> class Stack { public: Stack(); Stack(const Stack<T> &st); Stack &operator=(const Stack<T> &st); ~Stack(); public: void Push(const T &data); void Pop(); T &Top(); T &End(); bool Empty(); size_t Size(); void Print(); protected: void CheckCapacity(); protected: T *_arr; size_t _top; size_t _capacity; };
上面为我实现的一个类模板Stack,接下来介绍用两个Stack实现队列Queue的方式。
栈的特点是“先入后出”,而队列的特点是“先入先出”。
所以可以定义一个类Queue,包含2个成员对象:
一个栈_stack1存放数据,另一个栈_stack2用来临时存放数据,通过一些压栈出栈的成员方法就可以实现对队列的入队、出队操作。
实现的2个栈组成的队列如下图所示,现在要将一组数据【1 2 3 4 5】放入队列中:
先将这组数依次压入_stack1中,然后再将_stack1中的元素依次出栈压入_stack2中:
时间: 2024-11-04 11:53:19