博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Implement Stack using Queues 用队列实现栈
阅读量:6811 次
发布时间:2019-06-26

本文共 1466 字,大约阅读时间需要 4 分钟。

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.
解题思路:
用队列实现栈的操作。包含输入、输出、取栈顶元素、推断栈是否为空。
我们知道,栈是先进后出的容器,队列是先进先出的容器。所以输入元素非常easy,可是输出元素不是输出队列的front,而是back元素。删掉back元素。此时我们能够将队列1中的非队尾元素存在另外一个队列2中,删掉之前队列的最后一个元素不另行存储即可。

此时队列2中有元素。是可运行的容器。队列1是空,备用容器,所以我们须要两个表示符,代表两个队列,表示此队列是否是当前可操作的容器。简单来讲,就是用两个队列的操作(push()。pop(),empty())来实现栈的各种操作。

完整可运行代码例如以下:
#include
#include
using namespace std;queue
qu1;queue
qu2;bool qu1_use=1;bool qu2_use=0;void push(int x);void pop() ;int top() ;bool empty() ;void main(){ push(1); push(2); push(3); push(4); int i=5; while(i) { if(!empty()) { cout<
<
1) { qu2.push(qu1.front()); qu1.pop(); } qu1.pop(); qu1_use=0; qu2_use=1; return; } if(qu2_use==1&&!qu2.empty()) { while(qu2.size()>1) { qu1.push(qu2.front()); qu2.pop(); } qu2.pop(); qu1_use=1; qu2_use=0; return; } return;}int top() { if(qu1_use==1&&!qu1.empty()) { return qu1.back(); } if(qu2_use==1&&!qu2.empty()) { return qu2.back(); } //if(qu1.empty()&&qu2.empty()) exit(0); }bool empty() { if((qu1_use==1&&qu1.empty())||(qu2_use==1&&qu2.empty())) { cout<<"empty!"<
运行上面代码得到结果为:
4
3
2
1
empty!

转载于:https://www.cnblogs.com/clnchanpin/p/6956624.html

你可能感兴趣的文章
Java 实验五 王奕开
查看>>
docker容器持久化卷讲解
查看>>
h5 canvas
查看>>
Array循环
查看>>
tornado(五)
查看>>
属性扩展
查看>>
11.05面向对象 封装
查看>>
常用排序算法:桶排序
查看>>
操作SDO_GEOMETRY字段
查看>>
Why bugs don’t get fixed? 不是所有的Bug都要修复
查看>>
准备上线,切换到master分支,报错
查看>>
向量旋转专题
查看>>
287. Find the Duplicate Number
查看>>
struts1(一)流程分析
查看>>
SpringCloud 进阶之Eureka(服务注册和发现)
查看>>
2014华为机试,迷宫矩阵寻找单词的存在与否
查看>>
cxf使用wsdl文件生成代码
查看>>
ASP.NET文件的上传与下载
查看>>
[POI2007]ODW-Weights(贪心)
查看>>
[HNOI2016]树
查看>>