add: 220505 [cpp]
This commit is contained in:
parent
d5b8e06333
commit
c9c4474306
|
|
@ -0,0 +1,64 @@
|
|||
#include <queue>
|
||||
#include <iostream>
|
||||
|
||||
/**
|
||||
* 225. Implement Stack using Queues
|
||||
* Implement a last-in-first-out (LIFO) stack using only two queues. The implemented stack should support all the functions of a normal stack (push, top, pop, and empty).
|
||||
*
|
||||
* Implement the MyStack class:
|
||||
*
|
||||
* void push(int x) Pushes element x to the top of the stack.
|
||||
* int pop() Removes the element on the top of the stack and returns it.
|
||||
* int top() Returns the element on the top of the stack.
|
||||
* boolean empty() Returns true if the stack is empty, false otherwise.
|
||||
*
|
||||
* Notes:
|
||||
*
|
||||
* You must use only standard operations of a queue, which means that only push to back, peek/pop from front, size and is empty operations are valid.
|
||||
* Depending on your language, the queue may not be supported natively. You may simulate a queue using a list or deque (double-ended queue) as long as you use only a queue's standard operations.
|
||||
*/
|
||||
|
||||
class MyStack {
|
||||
private:
|
||||
std::queue<int> q;
|
||||
public:
|
||||
MyStack() = default;
|
||||
|
||||
void push(int x) {
|
||||
auto s = q.size();
|
||||
q.push(x);
|
||||
// It sucks.
|
||||
// It is ugly, inefficient, slow, and horrible.
|
||||
while (s--) {
|
||||
q.push(q.front());
|
||||
q.pop();
|
||||
}
|
||||
}
|
||||
|
||||
int pop() {
|
||||
int ret = q.front();
|
||||
q.pop();
|
||||
return ret;
|
||||
}
|
||||
|
||||
int top() {
|
||||
return q.front();
|
||||
}
|
||||
|
||||
bool empty() {
|
||||
return q.empty();
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
MyStack s;
|
||||
s.push(1);
|
||||
s.push(2);
|
||||
s.push(3);
|
||||
std::cout << s.top() << "\n";
|
||||
s.push(4);
|
||||
s.push(5);
|
||||
while (!s.empty()) {
|
||||
std::cout << s.pop() << std::endl;
|
||||
}
|
||||
}
|
||||
|
|
@ -3,4 +3,4 @@ PROJECT(2205)
|
|||
|
||||
SET(CMAKE_CXX_STANDARD 23)
|
||||
|
||||
ADD_EXECUTABLE(2204 220505-CN.cpp)
|
||||
ADD_EXECUTABLE(2204 220505.cpp)
|
||||
|
|
|
|||
Loading…
Reference in New Issue