两个栈实现一个队列


看了各路大神的思路,我就综合了一下,写出了自己的一些理解,希望大家能指出我的不足。
栈s1实现主要实现“入队”操作;
栈s2实现主要实现”出队“操作;

思路一:
入队时:判s1是否为空,若为空,把s2里边的的元素“全部”倒回s1里边;若s1不为空,则直接将元素入栈s1;
出队时: 判s2是否为空,若为空(假设此时s1不为空,若s1也为空,就只能报错),把s1里边元素”全部“弹出到s2里边,然后执行出队操作;若s2不为空,则直接出队s2。

思路二:
入队时:直接将s1入队。
出队时:判s2是否为空,若为空(假设此时s1不为空,若s1也为空,就只能报错),把s1里边元素”全部“弹出到s2里边,然后执行出队操作;若s2不为空,则直接出队s2。

两个思路有一个可以共同优化的一项是:若s2出队时为空,将s1的元素弹出到s2里边的时候,只需弹出(总数-1)个,最后一个元素弹出后直接当作出队操作即可。
伪代码如下:

//入队操作;
void EnterQueue(s1,s2,k)
{
if(IsEmpty(s1)==1)
{
while(IsEmpty(s2)==0)
{
Push(s1,Pop(s2));
}
}
}
//出队操作:
void DelQueue(s1,s2,k)
{
if(IsEmpty(s2)==1)
{
if(IsEmpty(s1)==1)
{
exit(-1);
}
while(IsEmpty(s1)==0)
{
Push(s2,Pop(s1));
}
}
Pop(s2);

}

两个队列实现一个栈:


q1:实现 出栈 操作;q2:实现中转

出栈:先把入对k1,k2,k3入队q1,现在如果要出队,则依次把k1,k2,依次出队q1,然后再入队q2,把k3给出队(出栈);
入栈:q1和q2的入队过程便是入栈的过程

大致代码思想:
//假设栈中有n个元素
void Pop(q1,k)
{
i=n;
while(i>1)
{
Enter(q2,DelQueue(q1,kn));
)
Del(q1,k);
}

void Push(q1,k)
{
Enter(q1,k);
}

两个队列实现栈、两个栈实现队列相关推荐

  1. 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; public class Solution {      ...

  2. 算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...

    算法:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.<剑指offer> 利用栈来进行操作,代码注释写的比较清楚:首先判断两个栈是否是空的:其次当栈二 ...

  3. python ——两个队列实现一个栈两个栈实现一个队列

    1.两个队列实现一个栈 进栈:元素入队列A 出栈:判断如果队列A只有一个元素,则直接出队.否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队.为了下一次继续操作,互换队A和队B. p ...

  4. 脱裤子放屁之用两个栈实现队列、用两个队列实现栈

    牛客网上有一道很nt的题目,用两个栈实现队列,你直接用队列不好吗?还耗内存,真的是脱裤子放屁,但是骂归骂,题目还是要做的. 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为in ...

  5. 数据结构与算法(3-1)栈(顺序栈、两栈共享空间、链栈、栈的计算器)

    目录 一.顺序栈 存储结构 总代码 二.两栈共享空间 存储结构: 总代码: 三.链栈 存储结构: 总代码: 一.顺序栈 存储结构: 栈特点:先进后出,后进先出.(特殊的线性表) 入栈时在栈顶添加元素, ...

  6. 一个数组实现两个栈(共享栈)

    题目:   一个数组实现两个栈. 方法1:   下标为0的位置为栈1的栈底,下标为1的位置为栈2的栈底,栈1的元素存放在下标为偶数的位置上,栈2的元素放在下标为奇数的位置上.   如上图所示的数组:若 ...

  7. 用两个栈实现最小栈的功能

    用两个栈实现最小栈的功能(取栈中最小数): package com.neusoft.data.structure;import java.util.Stack;/** * 用两个栈实现最小栈的功能 * ...

  8. 是栈还是队列c语言实验报告怎么写,队列和栈(C语言)

    栈和队列的基本性质 栈是先进后出的结构(弹夹) 队列是先进先出的(排队) 栈和队列在实现结构上可以有数组和链表两种方式 栈结构的基本操作: 1.弹栈 2.访问栈顶元素 3.压栈操作 4.返回当前栈中的 ...

  9. 复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值

    栈和队列的概念 栈:吃进去吐出来 对列:吃进去拉出来 数据结构中的栈和内存中的区别 数据结构中的栈具有后进先出的特性,而内存中的栈是一个内存空间,只不过这个内存空间具与数据结构的栈具有相同的特性. 栈 ...

  10. 用队列实现栈 AND 用栈实现队列

    用队列实现栈 思路 入队列就是入栈 出队列的时候,就是把前面size-1个队列中的元素先出,这样最后一个元素就成队首元素了,再把出去的元素再次入队列 读栈顶元素,过程和第二步是一样的,就是弹出后,再把 ...

最新文章

  1. 转-Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
  2. 【微信小程序企业级开发教程】事件相关详解
  3. Safari下弹窗问题的解决办法
  4. ITK:概念检查是同一类型
  5. sonar:默认的扫描规则
  6. 大院大所合作对接会7天倒计时!亮点抢先看
  7. 基于JAVA springboot+mybatis 电商书城平台系统设计和实现
  8. html5响应式网站建设网络类织梦模板
  9. Graph Embedding:word2vec更进一步?
  10. 前端小白程序员入门之前知道这些,半年后都拿到8K+的offer
  11. phpcmsv9全站搜索,不限模型
  12. Photoshop 常用快捷键
  13. 【OpenGL 实验二】Liang-Barsky 裁剪算法
  14. MTK 驱动开发---Memory 移植
  15. 微信小游戏可视化开发工具
  16. 怎么在计算机里隐藏文件,怎么显示电脑隐藏文件?
  17. [4G5G专题-46]:物理层-自适应编码调制AMC与调制编码方案(MCS, CQI, SINR, HARQ,Code Rate, efficiency)
  18. substratum android8,substratumlite主题管理
  19. 如何打造百万爆款短视频?普通人如何通过短视频赚钱?3分钟学会
  20. 关于Google地图路线偏移的问题

热门文章

  1. 跳舞的伤感心情日志:你恋或者不恋,爱就在那里
  2. 少儿美术课儿童画之水彩画第2集《花尾巴的大孔雀》
  3. 什么时候会使用内部临时表?
  4. 新手主播快速热场的2个技巧
  5. 汤姆猫无法访问html,汤姆猫开始,但HTML不加载
  6. 宏碁新款非凡 Pro 笔记本 评测
  7. 配置resolve映射路径
  8. 四川2022中国农民丰收节 国稻种芯:成都第三届川渝农交会
  9. 数据库怎么和网站服务器连接,数据库怎么和网站服务器连接
  10. android 涨潮动画加载_2018工作记:潮汐 App