《剑指offer》--009--用两个栈实现队列

6人阅读 评论(0) 收藏 举报
分类:

《剑指offer》–目录索引

题目:

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能

思路:

简单,直接上手

代码如下:

#pragma once
#include <stack>
#include <iostream>

using namespace std;

typedef int DataType;

class Queue
{
public:
    Queue(void){}
    ~Queue(void){}
    void appendTail(const DataType& node)
    {
        s1.push(node);
    }
    DataType deleteHead()
    {
        if (s2.empty())//栈2为空
        {
            while (!s1.empty())//将栈1的元素挪到栈2里,直到栈1为空
            {
                s2.push(s1.top());
                s1.pop();
            }
        }
        if (s2.empty())//如果栈2为空
        {
            cout << "Queue is empty!" << endl;
            exit(1);
        }
        DataType head = s2.top();
        s2.pop();
        return head;
    }
private:
    stack<DataType> s1;
    stack<DataType> s2;
};

查看评论

剑指offer《面试题7:用两个栈实现队列》及用两个队列实现一个栈

栈和队列是两个特点相反的数据结构,但联系非常密切。 栈的特点就是“后进先去”,即是最后被压入(push)的栈元素会被第一个弹出(pop)。 队列的特点就是“先进先出”,即是第一个进...
  • SingleLegCat
  • SingleLegCat
  • 2015-07-15 00:40:13
  • 1505

【剑指offer】两个队列实现一个栈

转载请注明出处:    题目:用两个队列模拟一个栈,即用两个队列的出队和入队操作,来实现栈的出栈和入栈操作。    思路:稍微画下草图,便不难想出该题的解决方法,思路如下:    假设有两个队列Q1和...
  • mmc_maodun
  • mmc_maodun
  • 2014-05-06 09:04:50
  • 3161

【剑指Offer】用两个栈来实现队列 解题报告(python)

【剑指Offer】用两个栈来实现队列 解题报告(python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-inter...
  • fuxuemingzhu
  • fuxuemingzhu
  • 2018-03-09 16:34:22
  • 35

剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 我们通过一个具体的例子来分析该队列插...
  • jsqfengbao
  • jsqfengbao
  • 2015-07-27 19:25:01
  • 3014

剑指offer之面试题7:用两个栈实现队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:push操作无所谓栈或队列,都是往里面加入元素。而区别在于pop操作,队列的pop操作取的是先push...
  • sushauai
  • sushauai
  • 2016-04-15 19:32:46
  • 674

剑指offer:用两个栈实现队列、用两个队列实现一个栈(java)

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 该题目,要求我们操作两个先进后出的栈...
  • abc7845129630
  • abc7845129630
  • 2016-09-29 10:59:12
  • 275

剑指offer第五题【用两个栈实现队列】c++实现

用两个栈实现队列 参与人数:3531时间限制:1秒空间限制:32768K通过比例:34.83%最佳记录:0 ms|0K(来自  William_Meng) 题目描述 用两个栈来实现一个队列...
  • u011692312
  • u011692312
  • 2015-10-13 18:11:38
  • 382

剑指Offer:面试题7——用两个栈实现队列(java实现)

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。首先定义两个栈Stack stack1 = new Stack();//作为进队的端口 Stack sta...
  • lilianforever
  • lilianforever
  • 2016-07-05 13:31:59
  • 1726

《剑指offer》:[7]两个队列实现栈的C++代码实现

问题:两个队列实现栈。     因为队列的特点是先进先出,而栈式先进后出。所以具体的实现步骤如下: (1)判断是否为NULL;如果queue1和queue2都为NULL,则该栈为NULL; (2)如果...
  • gogoky
  • gogoky
  • 2016-05-26 11:21:02
  • 636

牛客网刷题--剑指offer(两个栈实现队列)

牛客网给出的题目要求是用两个栈数据结构实现一个队列的push和pop操作。 两个栈实现队列这是很好理解的。因为栈的特性是后进先出(LIFO),而队列的特性是先进先出(FIFO),那两个栈连在一块儿,...
  • liu_sheng_1991
  • liu_sheng_1991
  • 2016-06-29 17:56:24
  • 439
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 1216
    排名: 4万+
    最新评论