C++(通过leetcode225|学会queue的库使用)

class MyStack {
public:
    queue<int> queue1;//作为堆的主体
    queue<int> queue2;
    MyStack() {

    }

    void push(int x) {
        queue2.push(x);
        while (!queue1.empty())
        {
            queue2.push(queue1.front());//将1的头推入2
            queue1.pop();//退出
        }
        swap(queue1, queue2);//估计是重载过的
    }

    int pop() {
        int tmp = queue1.front();
        queue1.pop();//推出
        return tmp;
    }

    int top() {
        return queue1.front();
    }

    bool empty() {
        return queue1.empty();
    }
};

通过解题的收获和思考

可以通过库函数定义队列(其他的应该也可以)

通过再public区域里面

queue<int>queue1;
queue<int>queue2;

猜测:int是data的类型,如果有具体的QElemType结构体定义Data的类型的话可以替换

通过引用该库,可以使用该语句定义出queue(队列)

其基本操作有:(需要通过队列名进行引用)

push()从队尾插入

pop()从队头弹出

size()大小

empty()判断是否为空

front()读取队头

back()读取队尾

使用两个队列模拟(栈)

则将其中一个视作堆,另一个视作中转站

目标是push进去的元素排在队头

push进中转站,再把目标“堆”中的元素尽数排空到中转站中

再直接swap(队1,队2)

则队1就符合了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值