• 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();
        }
    };
  • 相关阅读:
    C#使用结构体,输入5个人的学号,姓名,分数,按照成绩高低排列打印出来
    数据库考试试题
    数据库存储系统应用,超市小票系统
    数据库变量与语句
    练习:C#---类(身份证号截取生日、验证邮箱、DateTime)
    Chapter 3. 类---String类、Math类、Datetime类
    练习:C#---for循环(整数和、阶乘、楼梯)
    Chapter 2 C#语句---异常语句
    Chapter 2. C#语句---循环语句
    Chapter 2 C#语句---选择语句
  • 原文地址:https://www.cnblogs.com/csudanli/p/5335509.html
Copyright © 2020-2023  润新知