学习用品

用两个栈实现队列

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M

class Solution
{
public:
    void push(int node) {
        
    }

    int pop() {
        
    }

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

只是空行用

题目分析

虽然题中交代要实现的是pop( )功能,但在本题中的pop( )函数是int类型,所以要考虑返回值和函数的可复用性

只是空行用

代码

void push(int node) 
{
	stack1.push(node);
}

int pop() 
{
	int temp;

	//已转移的情况
	if (!stack2.empty())
	{
		temp = stack2.top();
		stack2.pop();
	}

	//第一次调用,尚未转移至stack2
	else if (!stack1.empty())
	{
		//栈元素逆序转移
		while (!stack1.empty())
		{
			temp = stack1.top();
			stack2.push(temp);
			stack1.pop();
		}
		temp = stack2.top();
		stack2.pop();
	}

	return temp;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注