[Pregunta diaria] 26: Use la pila para implementar la cola

Descripción del título

Use la pila para implementar las siguientes operaciones de la cola:

  • push (x): coloca un elemento al final de la cola.
  • pop (): elimina el elemento del encabezado de la cola.
  • peek (): devuelve el elemento en la cabecera de la cola.
  • empty (): devuelve si la cola está vacía.

Ejemplo:

MyQueue queue = new MyQueue();

queue.push(1);
queue.push(2);  
queue.peek();  // 返回 1
queue.pop();   // 返回 1
queue.empty(); // 返回 false

Explicación

Solo puede usar operaciones de pila estándar, es decir, solo empujar hacia arriba, peek / pop desde arriba, el tamaño y las operaciones vacías son legales.
Es posible que el idioma que está utilizando no sea compatible con la pila. Puede usar list o deque (cola de doble extremo) para simular una pila, siempre que sea una operación de pila estándar.
Se supone que todas las operaciones son válidas (por ejemplo, una cola vacía no llamará operaciones pop o peek).

Código de respuesta:

class MyQueue {
    stack<int> m_s1;
public:
    /** Initialize your data structure here. */
    MyQueue() {

    }
    
    /** Push element x to the back of queue. */
    void push(int x) {
        m_s1.push(x);
    }
    
    /** Removes the element from in front of queue and returns that element. */
    //力扣模版需要返回值进行检测
    //int pop() {
    void pop(){
        stack<int> m_s2;
        while(m_s1.size()){
            m_s2.push(m_s1.top());
            m_s1.pop();
        }
        //int tmp = m_s2.top();
        m_s2.pop();
        while(m_s2.size()){
            m_s1.push(m_s2.top());
            m_s2.pop();
        }
        //return tmp;
    }
    
    /** Get the front element. */
    int peek() {
        stack<int> m_s2;
        while(m_s1.size()){
            m_s2.push(m_s1.top());
            m_s1.pop();
        }
        int tmp = m_s2.top();
        while(m_s2.size()){
            m_s1.push(m_s2.top());
            m_s2.pop();
        }
        return tmp;
    }
    
    /** Returns whether the queue is empty. */
    bool empty() {
        return m_s1.empty();
    }
};

Si tiene opiniones diferentes, ¡deje un mensaje para discutir! ! !

152 artículos originales publicados · 45 elogiados · 10,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/AngelDg/article/details/105372901
Recomendado
Clasificación