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

《剑指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;
};

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w_y_x_y/article/details/79980124
个人分类: 剑指offer
上一篇狼人杀上帝语音助手
下一篇Linux:模拟实现shell
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭