两个队列实现栈、两个栈实现队列
两个栈实现一个队列
看了各路大神的思路,我就综合了一下,写出了自己的一些理解,希望大家能指出我的不足。
栈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);
}
两个队列实现栈、两个栈实现队列相关推荐
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; public class Solution { ...
- 算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...
算法:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.<剑指offer> 利用栈来进行操作,代码注释写的比较清楚:首先判断两个栈是否是空的:其次当栈二 ...
- python ——两个队列实现一个栈两个栈实现一个队列
1.两个队列实现一个栈 进栈:元素入队列A 出栈:判断如果队列A只有一个元素,则直接出队.否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队.为了下一次继续操作,互换队A和队B. p ...
- 脱裤子放屁之用两个栈实现队列、用两个队列实现栈
牛客网上有一道很nt的题目,用两个栈实现队列,你直接用队列不好吗?还耗内存,真的是脱裤子放屁,但是骂归骂,题目还是要做的. 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为in ...
- 数据结构与算法(3-1)栈(顺序栈、两栈共享空间、链栈、栈的计算器)
目录 一.顺序栈 存储结构 总代码 二.两栈共享空间 存储结构: 总代码: 三.链栈 存储结构: 总代码: 一.顺序栈 存储结构: 栈特点:先进后出,后进先出.(特殊的线性表) 入栈时在栈顶添加元素, ...
- 一个数组实现两个栈(共享栈)
题目: 一个数组实现两个栈. 方法1: 下标为0的位置为栈1的栈底,下标为1的位置为栈2的栈底,栈1的元素存放在下标为偶数的位置上,栈2的元素放在下标为奇数的位置上. 如上图所示的数组:若 ...
- 用两个栈实现最小栈的功能
用两个栈实现最小栈的功能(取栈中最小数): package com.neusoft.data.structure;import java.util.Stack;/** * 用两个栈实现最小栈的功能 * ...
- 是栈还是队列c语言实验报告怎么写,队列和栈(C语言)
栈和队列的基本性质 栈是先进后出的结构(弹夹) 队列是先进先出的(排队) 栈和队列在实现结构上可以有数组和链表两种方式 栈结构的基本操作: 1.弹栈 2.访问栈顶元素 3.压栈操作 4.返回当前栈中的 ...
- 复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值
栈和队列的概念 栈:吃进去吐出来 对列:吃进去拉出来 数据结构中的栈和内存中的区别 数据结构中的栈具有后进先出的特性,而内存中的栈是一个内存空间,只不过这个内存空间具与数据结构的栈具有相同的特性. 栈 ...
- 用队列实现栈 AND 用栈实现队列
用队列实现栈 思路 入队列就是入栈 出队列的时候,就是把前面size-1个队列中的元素先出,这样最后一个元素就成队首元素了,再把出去的元素再次入队列 读栈顶元素,过程和第二步是一样的,就是弹出后,再把 ...
最新文章
- 转-Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
- 【微信小程序企业级开发教程】事件相关详解
- Safari下弹窗问题的解决办法
- ITK:概念检查是同一类型
- sonar:默认的扫描规则
- 大院大所合作对接会7天倒计时!亮点抢先看
- 基于JAVA springboot+mybatis 电商书城平台系统设计和实现
- html5响应式网站建设网络类织梦模板
- Graph Embedding:word2vec更进一步?
- 前端小白程序员入门之前知道这些,半年后都拿到8K+的offer
- phpcmsv9全站搜索,不限模型
- Photoshop 常用快捷键
- 【OpenGL 实验二】Liang-Barsky 裁剪算法
- MTK 驱动开发---Memory 移植
- 微信小游戏可视化开发工具
- 怎么在计算机里隐藏文件,怎么显示电脑隐藏文件?
- [4G5G专题-46]:物理层-自适应编码调制AMC与调制编码方案(MCS, CQI, SINR, HARQ,Code Rate, efficiency)
- substratum android8,substratumlite主题管理
- 如何打造百万爆款短视频?普通人如何通过短视频赚钱?3分钟学会
- 关于Google地图路线偏移的问题