Implement the following operations of a queue using stacks.
- push(x) -- Push element x to the back of queue.
- pop() -- Removes the element from in front of queue.
- peek() -- Get the front element.
- empty() -- Return whether the queue is empty.
Notes:
- You must use only standard operations of a stack -- which means only
push
,
to toppeek/pop from top
,size
,
andis empty
operations are valid. - Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
- You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
实现:
class Queue {
public:
// Push element x to the back of queue.
void push(int x) {
deq.push_back(x);
if (deq.size() == 1) {
front = x;
}
}
// Removes the element from in front of queue.
void pop(void) {
vector<int> vec;
while (deq.size() > 0) {
vec.push_back(deq.back());
deq.pop_back();
}
if (vec.size() > 0) {
for (int i=vec.size()-1-1; i >= 0; i--) {
push(vec[i]);
}
}
}
// Get the front element.
int peek(void) {
return front;
}
// Return whether the queue is empty.
bool empty(void) {
return deq.size() == 0;
}
private:
deque<int> deq;
int front;
};
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-13 13:20:35