leetcode 232. Implement Queue using Stacks

来源:互联网 发布:知乎的运营模式 编辑:程序博客网 时间:2024/06/05 00:17

解题思路:
用栈的基本操作实现队列的基本操作
原题目:

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 top, peek/pop from top, size, and is 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).

AC解,C++代码,菜鸟一个,请大家多多指正

class Queue {public:    // Push element x to the back of queue.    stack<int> stk;    void push(int x) {        stk.push(x);    }    // Removes the element from in front of queue.    void pop(void) {        stack<int> tmp_stk;        while (!stk.empty()) {            int value = stk.top();            stk.pop();            tmp_stk.push(value);        }        tmp_stk.pop();        while(!tmp_stk.empty()) {            int value = tmp_stk.top();            tmp_stk.pop();            stk.push(value);        }    }    // Get the front element.    int peek(void) {        stack<int> tmp_stk;        while (!stk.empty()) {            int value = stk.top();            stk.pop();            tmp_stk.push(value);        }        int ret = tmp_stk.top();        while(!tmp_stk.empty()) {            int value = tmp_stk.top();            tmp_stk.pop();            stk.push(value);        }        return ret;    }    // Return whether the queue is empty.    bool empty(void) {        return stk.empty();    }};
0 0