1. 程式人生 > >3.5 用兩個棧實現佇列

3.5 用兩個棧實現佇列

用兩個棧實現佇列

用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。
class Queue
{
public:
	void push(int node) {
		stack1.push(node);
	}

	int pop() {
		if (stack1.empty()) {
			return -1;
		}

		// 確保stack2 為空
		while (!stack2.empty())
		{
			stack2.pop();
		}

		// stack1中的資料全部倒入stack2中
		while (!stack1.empty()) {
			stack2.push(stack1.top());
			stack1.pop();
		}

		// 獲取stack2的棧頂元素
		int val = stack2.top();
		stack2.pop();

		// stack2中的資料全部倒回stack1中
		while (!stack2.empty()) {
			stack1.push(stack2.top());
			stack2.pop();
		}

		return val;
	}

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

測試

在這裡插入圖片描述