C++:颠倒队列前K个元素

/ C++ / 没有评论 / 1389浏览

颠倒队列,就用栈辅助;颠倒栈,就用队列辅助。

//使用大小为k的辅助堆栈
//随后将没有入栈的部分扔到队列前面
void reversalQueue2(queue<int>& que, int k)
{
	//默认k<que.size()
	stack<int> stk;
	for (int i = 0; i < k; ++i)
	{
		stk.push(que.front());
		que.pop();
	}

	while (!stk.empty())
	{
		que.push(stk.top());
		stk.pop();
	}

	for (int i = 0; i < que.size() - k; ++i)
	{
		que.push(que.front());
		que.pop();
	}
}