赞
踩
class MyQueue { public: stack<int> stIn; stack<int> stOut; MyQueue() { } void push(int x) { stIn.push(x); } int pop() { // 从队列的开头移除并返回元素 // 只有当stOut为空的时候,再从stIn里导入数据(导入stIn全部数据) if (stOut.empty()){ while(!stIn.empty()) { stOut.push(stIn.top()); stIn.pop(); } } int value = stOut.top(); stOut.pop(); return value; } int peek() { // if (stOut.empty()){ // while(!stIn.empty()) // { // stOut.push(stIn.top()); // stIn.pop(); // } // } // int value = stOut.top(); // return value; int value = this->pop(); // 直接使用已有的pop函数 stOut.push(value); // 因为pop函数弹出了元素res,所以再添加回去 return value; } bool empty() { if(stIn.empty() && stOut.empty()) { return true; } else { return false; } } }; /** * Your MyQueue object will be instantiated and called as such: * MyQueue* obj = new MyQueue(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->peek(); * bool param_4 = obj->empty(); */
class MyStack { public: queue<int> que1; queue<int> que2; // 辅助队列,用来备份 MyStack() { } void push(int x) { // 将元素x压入栈顶 que1.push(x); } int pop() { int s = que1.size(); for(int i=0;i<s-1;i++) //pop出来几次这里带不带等于拿例子试一试 { que2.push(que1.front()); que1.pop();//塞进que2后别忘了que1中要删除呀! } int result; result = que1.front(); que1.pop(); que1=que2; while (!que2.empty()) { // 清空que2 que2.pop(); } return result; } int top() { // 返回栈顶元素 return que1.back(); } bool empty() { // 如果栈是空的,返回true;否则返回false; return(que1.empty()); } };
其实这道题目就是用一个队列就够了。
一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了
class MyStack { public: queue<int> que; /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ void push(int x) { que.push(x); } /** Removes the element on top of the stack and returns that element. */ int pop() { int size = que.size(); size--; while (size--) { // 将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部 que.push(que.front()); que.pop(); } int result = que.front(); // 此时弹出的元素顺序就是栈的顺序了 que.pop(); return result; } /** Get the top element. */ int top() { return que.back(); } /** Returns whether the stack is empty. */ bool empty() { return que.empty(); } };
2023.12.8 21:00-21:26
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。