面试题:用两个栈实现队列,用两个队列实现栈

两个栈实现一个队列:

目前创新互联公司已为近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;
};

网站名称:面试题:用两个栈实现队列,用两个队列实现栈
本文URL:https://www.cdcxhl.com/article30/gihjpo.html

成都网站建设公司_创新互联,为您提供域名注册全网营销推广微信小程序网页设计公司网站改版网站设计公司

广告

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

成都定制网站网页设计