码迷,mamicode.com
首页 > 其他好文 > 详细

用2个栈实现队列

时间:2016-04-09 17:07:15      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:数据结构

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中:

技术分享


用2个栈实现队列

标签:数据结构

原文地址:http://zhweizhi.blog.51cto.com/10800691/1762077

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!