C++用栈实现队列功能(push,pop,top,empty)

之前已经了解过了栈和队列的特性,再温习一下

栈:先进后出,后进先出。
队列:先进先出,后进后出。
好,直接边思考边写代码

#include<iostream>
#include<stack>

//先构建一个队列的类
class MyQueue
{
public: 
	void push(int data)			//push要解决的问题就是:将栈操作中 后push进去的元素最后再弹出来。
	{
		//首先,我们要借助一个辅助栈,存放m_data中已经存在的数据
		stack<int> temp;
		while(!m_data.empty())		//将已经在栈中存好的符合先进先出的数据倒出来。
		{
			temp.push(m_data.top());	//不断地取栈顶元素
			m_data.pop();				//取了之后且勿忘直接弹栈。
		}
		m_data.push(data);				//将data压栈。
		while(!temp.empty())			//data压完之后将辅助栈的元素一个个压入m_data。
		{
			m_data.push(temp.top());	
			temp.pop();
		}
	}

	int pop()		//维护好的m_data已经符合先进先出了,直接弹栈就可以了。
	{
		const int popMem = m_data.top();
		m_data.pop();
		
		return popMem;
	}

	int front()		//队列顶就是已经维护好的m_data的栈顶。	
	{
		return m_data.top();
	}

	bool empty()
	{
		return m_data.empty();
	}

private:
	stack<int> m_data;		//存放数据
}


当然,还有其他方法,不过这种方法我用着感觉还蛮简单易用的。

发布了21 篇原创文章 · 获赞 3 · 访问量 598

猜你喜欢

转载自blog.csdn.net/W96866/article/details/105695670