【校招面试 之 剑指offer】第9-1题 用两个栈实现一个队列

时间:2021-11-15 22:59:39
#include<iostream>
#include<stack>
using namespace std; template <typename T>
void pushQueue(stack<T> &stack1, T t){
stack1.push(t);
} template<typename T>
T popQueue(stack<T> &stack1, stack<T> &stack2){
// 先将stack1倒到stack2中
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();
} // 然后取出stack2中的栈顶元素
T targetNum = stack2.top();
stack2.pop(); // 将stack2中的元素倒回到stack1中(为了下次再做操作(入队或者出对只对stack1操作))
while(!stack2.empty()){
stack1.push(stack2.top());
stack2.pop();
}
return targetNum;
} // 输出
template <typename T>
void printStack1(stack<T> &stack1){
while(!stack1.empty()){
cout<<stack1.top()<<" ";
stack1.pop();
}
}
int main(){ stack<int> stack1;
stack<int> stack2;
// 1.入队操作
pushQueue(stack1, 100);
pushQueue(stack1, 200); //2.出队操作
cout<<popQueue(stack1, stack2)<<endl;
// 3.打印验证
pushQueue(stack1, 300);
printStack1(stack1);
system("pause");
return 0;
}

【校招面试 之 剑指offer】第9-1题 用两个栈实现一个队列

【校招面试 之 剑指offer】第9-1题 用两个栈实现一个队列的更多相关文章

  1. 【校招面试 之 剑指offer】第9-2题 用两个队列实现一个栈

    #include<iostream> #include<queue> using namespace std; // 对于出栈解决的思路是:将queue1的元素除了最后一个外全 ...

  2. 【校招面试 之 剑指offer】第18题 删除链表中的节点

    题目一:在O(1)时间内删除链表节点. 给定单项链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. 思路:(1)如果要删除的节点不是链表的尾节点,则将被删除节点的内容复制到该节点,然 ...

  3. 【校招面试 之 剑指offer】第16题 数值的整数次方

    方法1:直接求解,但是要注意特殊情况的处理:即当指数为负,且底数为0的情况. #include<iostream> using namespace std; template<typ ...

  4. 【校招面试 之 剑指offer】第11题 旋转数组中的最小数字

    题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如: 数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...

  5. 【校招面试 之 剑指offer】第10-3题 矩阵覆盖问题

    题目:我们可以使用2✖️1的小矩形横着或者竖着去覆盖更大的矩形.请问用8个2✖️1的小矩形无重叠地覆盖一个2✖️8的大矩形,共有多少种方法? 分析:当放第一块时(假定从左边开始)可以横着放,也可以竖着 ...

  6. 【校招面试 之 剑指offer】第10-2题 青蛙跳台阶问题

    题目1:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个n级台阶共有多少种跳法? 题目2:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶...也可以一次跳n级台阶.求该青蛙跳上一个 ...

  7. 【校招面试 之 剑指offer】第10-1题 斐波那契数列

    递归以及非递归实现: #include<iostream> using namespace std; long long fun(long long n){ if(n == 0){ ret ...

  8. 《剑指offer》面试题7 用两个栈实现队列 Java版

    书中方法:队列是先进先出的,栈是先进后出的,试想把一串数压入A栈,接着一个个出栈并压入B栈,便会完成"头在下"到"头在上"的转变.B栈内还有元素时,直接出栈表示 ...

  9. 剑指Offer面试题:6&period;用两个栈实现队列

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

随机推荐

  1. 第5章 软件包管理(1)&lowbar;RPM包安装

    1. 软件包简介 1.1 软件包分类 (1)源码包:如C.C++源码包,脚本安装包执行后可以自动安装. (2)二进制包:Redhat系列(如CentOS):为RPM包,Debian系列(如ubuntu ...

  2. C&num; GMap下提供一个高德地图

    using System; using GMap.NET.Internals; using GMap.NET.Projections; namespace GMap.NET.MapProviders ...

  3. Install and set JAVA home on MAC OS with commandline

    最近需要在MAC上做一些测试,由于测试机没有安装Java,只能自己安装,由于不能通过图形化界面访问测试机,只能通过命令行的形式来安装JAVA. 1. Download the jre/jdk inst ...

  4. tmux常用命令

    tmux命令可以启动一个tmux服务,tmux服务包含多个session,session包含多个window,window包含多个pane. 常用命令tmux ls #显示已有tmux列表(C-b s ...

  5. Android(java)学习笔记169:Activity中的onCreate()方法分析

    1.onCreate( )方法是android应用程序中最常见的方法之一: 翻译过来就是说,onCreate()函数是在activity初始化的时候调用的,通常情况下,我们需要在onCreate()中 ...

  6. Mybatis 逆向工程

    Mybatis逆向工程: 推荐用Java和XML Configuration的方式生成逆向文件 Java类: package generation; import java.io.File; impo ...

  7. leetcode第一题--two sum

    Problem:Given an array of integers, find two numbers such that they add up to a specific target numb ...

  8. JSON、数组、时间戳

    // on removeClass addClass slice $('.pic-subgroup').on('click',function(){ $('.pic_div.active').remo ...

  9. spring报错NoClassDefFoundError等与第三方jar包导入问题

    今天配置spring,遇到各种报错的问题,做一个小小总结. 1.刚开始我忘了引入commons-logging,报错.--解决方式:下载并引入该jar包 2.spring以及commons-loggi ...

  10. Spring中&lt&semi;context&colon;annotation-config&sol;&gt&semi;

    最近在研究Spring中<context:annotation-config/>配置的作用,现记录如下: <context:annotation-config/>的作用是向Sp ...