• LeetCode Implement Stack using Queues


    Implement the following operations of a stack using queues.

       push(x) -- Push element x onto stack.

       pop() -- Removes the element on top of the stack.

       top() -- Get the top element.

       empty() -- Return whether the stack is empty.

    Notes

       You must use only standard operations of a queue -- which means only push to backpeek/pop from frontsize, and is empty operations are valid.

       Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.

       You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack). 

    题目的意思是让我们用队列的基本操作来完成栈的操作,你可以再借助一个队列或者双向链表。

      你能使用的队列的方法只有push,pop(这个方法在队列中是从队头去除元素,而不是队尾),peek(在C++中是front方法),size和empty

    很简单的题目,学过数据结构的应该都能实现

    class Stack {
    public:
        queue<int> que1, que2;
        // Push element x onto stack.
        void push(int x) {
            que1.push(x);
        }
    
        // Removes the element on top of the stack.
        void pop() {
            int i = 1,elem=0;
            while (i<que1.size())
            {
                elem = que1.front();
                que2.push(elem);
                que1.pop();
            }
            que1.pop();
            while (!que2.empty())
            {
                elem = que2.front();
                que1.push(elem);
                que2.pop();
            }
        }
    
        // Get the top element.
        int top() {
            int i = 1, elem = 0;
            while (i<que1.size())
            {
                elem = que1.front();
                que2.push(elem);
                que1.pop();
            }
            i = que1.front();
            que2.push(i);
            que1.pop();
            while (!que2.empty())
            {
                elem = que2.front();
                que1.push(elem);
                que2.pop();
            }
            return i;
        }
    
        // Return whether the stack is empty.
        bool empty() {
            return que1.empty();
        }
    };
  • 相关阅读:
    谈谈SpringFramework与IoC依赖查找
    监控微博、论坛的“棱镜计划”
    输出质数的方法改进
    参数解构
    直接插入排序
    理解迭代
    异常处理
    函数
    continue语句
    break语句
  • 原文地址:https://www.cnblogs.com/csudanli/p/5335509.html
Copyright © 2020-2023  润新知