本文主要是介绍Leetcode|入栈+出栈实现队列|剑指 Offer 09. 用两个栈实现队列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《225. 用两个队列实现栈》
《剑指 Offer 09. 用两个栈实现队列》
1 入栈+出栈实现队列
- 一个栈用于入队,一个栈用于出队操作
class CQueue {
public:stack<int> stk1, stk2; // stk1用于入队,stk2用于出队CQueue() {while (!stk1.empty()) stk1.pop();while (!stk2.empty()) stk2.pop();}void appendTail(int value) {stk1.push(value); // 入队直接压栈stk1即可}int deleteHead() {int res;if (stk2.empty()) {// 若两栈均为空,则说明队列为空,返回-1即可if (stk1.empty()) return -1;// 若用于出队的stk2为空且用于入队的stk1不为空,则把stk1中的元素逐个出栈倒入stk2中while (!stk1.empty()) {stk2.push(stk1.top());stk1.pop();}} // stk2出栈元素即为队列对应删除元素res = stk2.top();stk2.pop();return res;}
};/*
int main(){CQueue* q = new CQueue();for (int i = 3; i <= 6; i++)q->appendTail(i);for (int i = 0; i <= 6; i++)cout << q->deleteHead() << endl;return 0;
}
*/
这篇关于Leetcode|入栈+出栈实现队列|剑指 Offer 09. 用两个栈实现队列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!