面试题:用两个栈实现队列,用两个队列实现栈-创新互联

两个栈实现一个队列:

专注于为中小企业提供网站设计制作、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业依安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
template<class T>
class CQueue
{
public:
	void Push(const T& element)
	{
		stack1.push(element);
	}

	void Pop()
	{
		if (stack2.empty())
		{
			while (!stack1.empty())
			{
				stack2.push(stack1.top());
				stack1.pop();
			}
		}

		if (stack2.empty())
		{
			cout<<"queue is empty"<<endl;
			assert(false);
		}

		stack2.pop();
	}

	bool Empty()
	{
		if (stack1.empty() && stack2.empty())
			return true;
		else
			return false;

	}

	T Front()
	{
		if (!stack2.empty())
		{
			return stack2.top();
		}
		else
		{
			while (!stack1.empty())
			{
				stack2.push(stack1.top());
				stack1.pop();
			}

			if (stack2.empty())
			{
				cout<<"queue is empty"<<endl;
				assert(false);
			}

			return stack2.top();
		}
	}

private:
	stack<T> stack1;
	stack<T> stack2;
};

两个队列实现一个栈:

template<class T>
class CStack
{
public:
	void Push(const T& element)
	{
		queue1.push(element);
	}

	void Pop()
	{
		if (queue1.empty())
		{
			cout<<"stack is empty"<<endl;
			assert(false);
		}

		while (queue1.size() != 1)
		{
			queue2.push(queue1.front());
			queue1.pop();
		}

		queue1.pop();

		while (!queue2.empty())
		{
			queue1.push(queue2.front());
			queue2.pop();
		}
	}

	bool Empty()
	{
		if (queue1.empty())
			return true;
		else
			return false;
	}

	T Top()
	{
		if (queue1.empty())
		{
			cout<<"stack is empty"<<endl;
			assert(false);
		}
		return queue1.back();
	}

private:
	queue<T> queue1;
	queue<T> queue2;
};

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

文章名称:面试题:用两个栈实现队列,用两个队列实现栈-创新互联
网页网址:https://www.cdcxhl.com/article40/shgeo.html

成都网站建设公司_创新互联,为您提供网站营销App开发关键词优化用户体验网站建设做网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发