当前位置: 首页 > news >正文

门户网站是百度推广托管

门户网站是,百度推广托管,织梦网站如何做移动端,兰州装修公司前十名文章目录 队列和栈的区别一.用队列模拟实现栈1.1入栈1.2出栈1.3返回栈顶元素1.4判断栈是否为空 二.用栈模拟实现队列2.1 入队2.2出队2.3peek2.4判断队列是否为空 三.完整代码3.1 队列模拟实现栈3.2栈模拟实现队列 队列和栈的区别 栈和队列都是常用的数据结构,它们的…

文章目录

  • 队列和栈的区别
  • 一.用队列模拟实现栈
    • 1.1入栈
    • 1.2出栈
    • 1.3返回栈顶元素
    • 1.4判断栈是否为空
  • 二.用栈模拟实现队列
    • 2.1 入队
    • 2.2出队
    • 2.3peek
    • 2.4判断队列是否为空
  • 三.完整代码
    • 3.1 队列模拟实现栈
    • 3.2栈模拟实现队列


队列和栈的区别

栈和队列都是常用的数据结构,它们的主要区别在于数据的插入和删除顺序。

栈 (Stack) 是一种后进先出 (Last-In-First-Out, LIFO) 的数据结构,只允许在一端进行插入和删除操作,这一端称为栈顶。新元素插入后成为新的栈顶,而删除时也只能删除栈顶元素。

队列 (Queue) 是一种先进先出 (First-In-First-Out, FIFO) 的数据结构,允许在两端进行插入和删除操作,插入在队尾,删除在队头。新元素插入时成为新的队尾,而删除时也只能删除队头元素。

一.用队列模拟实现栈

1.void push(int x) 将元素 x 压入栈顶
2.int pop() 移除并返回栈顶元素
3.int top() 返回栈顶元素
4.boolean empty() 如果栈是空的,返回 true ;否则,返回 false

如上便是需要用队列来实现栈的四个基本操作。
我们试想,实现这些栈的操作,一个队列可以完成吗?
显然不可以,我们使用两个队列来实现栈的模拟
在这里插入图片描述

大体流程
1.入栈时:
如果两个都为空,那么想

1.1入栈

当我们要放入18 25 35 48 这一串数字入栈时,先放入18 25 35(放入时选择的队列是不为空的队列),模拟入队以及入栈时的状况,如下图
在这里插入图片描述

 public void push(int x) {if(empty()){queue1.offer(x);return;}if(!queue1.isEmpty()){queue1.offer(x);}else {queue2.offer(x);}}

1.2出栈

此时如果我们要将35出栈时,又该如何操作呢?此时我们就需要用到第二个队列,将队列一的前size-1个元素(也就是18 25)从队列一中出队,放入队列二中。此时队列一中的元素为35,队列二的元素为18 25 如下图。
在这里插入图片描述

当初栈完成时,我们此时要将48入栈时,又该放入哪个栈中呢?我们考虑栈的特点(先入后出),我们将再入栈的元素放到不为空的队列中。
在这里插入图片描述

 public int pop() {if(empty()){return -1;}if(!queue1.isEmpty()){int size = queue1.size();for (int i = 0; i < size-1; i++) {queue2.offer(queue1.poll());}return queue1.poll();}else {int size = queue2.size();for (int i = 0; i < size-1; i++) {queue1.offer(queue2.poll());}return queue2.poll();}}

1.3返回栈顶元素

在实现pop的基础上,我们将声明一个变量temp来储存每次要移除的元素。

  public int top() {if(empty()){return -1;}if (!queue1.isEmpty()){int temp = -1;int size = queue1.size();for (int i = 0; i < size; i++) {temp = queue1.poll();queue2.offer(temp);}return temp;}else {int size = queue2.size();int temp = -1;for (int i = 0; i < size; i++) {temp = queue2.poll();queue1.offer(temp);}return temp;}}

1.4判断栈是否为空

当队列一和队列二都为空时,此时栈就为空。

public boolean empty() {return queue1.isEmpty()&&queue2.isEmpty();}

二.用栈模拟实现队列

我们也是用两个栈来模拟实现队列

2.1 入队

我们将所有入队的元素都放入栈一中,如下图
在这里插入图片描述

public void push(int x) {stack1.push(x);}

2.2出队

要出栈时,如果栈二不为空,就出栈二中的元素,如果栈二为空,将栈一中的所有元素一次性的全部push到栈二中,此时就将入栈的元素全部倒转过来了,(例如入栈时在栈中的入栈顺序依次排序为18 25 35,栈二中此时的元素入栈顺序是35 25 18,出栈时就先出18,就完成了转换)如下图

在这里插入图片描述

 public int pop() {if(empty()){return -1;}if (stack2.isEmpty()){while (!stack1.isEmpty()){stack2.push(stack1.pop());}}return stack2.pop();}

2.3peek

peek只是将出队时的pop换成peek,就可以完成要求。

public int peek() {if(empty()){return -1;}if (stack2.isEmpty()){while (!stack1.isEmpty()){stack2.push(stack1.pop());}}return stack2.peek();}

2.4判断队列是否为空

如果栈一和栈二都为空时,那么队列就为空。

 public boolean empty() {return stack1.isEmpty() && stack2.isEmpty();}

三.完整代码

3.1 队列模拟实现栈

class MyStack {Queue<Integer> queue1 ;Queue<Integer> queue2 ;public MyStack() {queue1 = new LinkedList<>();queue2 = new LinkedList<>();}public void push(int x) {if(empty()){queue1.offer(x);return;}if(!queue1.isEmpty()){queue1.offer(x);}else {queue2.offer(x);}}public int pop() {if(empty()){return -1;}if(!queue1.isEmpty()){int size = queue1.size();for (int i = 0; i < size-1; i++) {queue2.offer(queue1.poll());}return queue1.poll();}else {int size = queue2.size();for (int i = 0; i < size-1; i++) {queue1.offer(queue2.poll());}return queue2.poll();}}public int top() {if(empty()){return -1;}if (!queue1.isEmpty()){int temp = -1;int size = queue1.size();for (int i = 0; i < size; i++) {temp = queue1.poll();queue2.offer(temp);}return temp;}else {int size = queue2.size();int temp = -1;for (int i = 0; i < size; i++) {temp = queue2.poll();queue1.offer(temp);}return temp;}}public boolean empty() {return queue1.isEmpty()&&queue2.isEmpty();}
}

3.2栈模拟实现队列

class MyQueue {public Stack<Integer> stack1 ;public Stack<Integer> stack2;public MyQueue() {stack1 = new Stack<>();stack2 = new Stack<>();}public void push(int x) {stack1.push(x);}public int pop() {if(empty()){return -1;}if (stack2.isEmpty()){while (!stack1.isEmpty()){stack2.push(stack1.pop());}}return stack2.pop();}public int peek() {if(empty()){return -1;}if (stack2.isEmpty()){while (!stack1.isEmpty()){stack2.push(stack1.pop());}}return stack2.peek();}public boolean empty() {return stack1.isEmpty() && stack2.isEmpty();}
}

文章转载自:
http://resurge.dtrz.cn
http://calyces.dtrz.cn
http://mutant.dtrz.cn
http://embalm.dtrz.cn
http://makar.dtrz.cn
http://poroplastic.dtrz.cn
http://enterpriser.dtrz.cn
http://vachel.dtrz.cn
http://artie.dtrz.cn
http://saxboard.dtrz.cn
http://clustering.dtrz.cn
http://shade.dtrz.cn
http://automaker.dtrz.cn
http://aboil.dtrz.cn
http://vitalize.dtrz.cn
http://pentagonoid.dtrz.cn
http://floyd.dtrz.cn
http://cobblestone.dtrz.cn
http://kathy.dtrz.cn
http://metho.dtrz.cn
http://genethliacally.dtrz.cn
http://allowable.dtrz.cn
http://euphrasy.dtrz.cn
http://ethnically.dtrz.cn
http://realpolitik.dtrz.cn
http://convent.dtrz.cn
http://zilch.dtrz.cn
http://potamology.dtrz.cn
http://dropscene.dtrz.cn
http://inconvenient.dtrz.cn
http://libbie.dtrz.cn
http://poon.dtrz.cn
http://happenstance.dtrz.cn
http://morasthite.dtrz.cn
http://headachy.dtrz.cn
http://aromaticity.dtrz.cn
http://chickaree.dtrz.cn
http://word.dtrz.cn
http://canescence.dtrz.cn
http://microtubule.dtrz.cn
http://teu.dtrz.cn
http://antiestablishment.dtrz.cn
http://bedchamber.dtrz.cn
http://denotatum.dtrz.cn
http://ouroscopy.dtrz.cn
http://chemosensory.dtrz.cn
http://obumbrant.dtrz.cn
http://impendence.dtrz.cn
http://germproof.dtrz.cn
http://collate.dtrz.cn
http://scolophore.dtrz.cn
http://periphonic.dtrz.cn
http://bregma.dtrz.cn
http://exigent.dtrz.cn
http://laputan.dtrz.cn
http://inviolable.dtrz.cn
http://puppydom.dtrz.cn
http://lethargize.dtrz.cn
http://isoamyl.dtrz.cn
http://coleopteron.dtrz.cn
http://deflocculant.dtrz.cn
http://functional.dtrz.cn
http://gypsography.dtrz.cn
http://handtruck.dtrz.cn
http://hcs.dtrz.cn
http://ridgeback.dtrz.cn
http://assured.dtrz.cn
http://uncynical.dtrz.cn
http://ergosome.dtrz.cn
http://postboat.dtrz.cn
http://terbium.dtrz.cn
http://fundamentalism.dtrz.cn
http://brush.dtrz.cn
http://lazily.dtrz.cn
http://pelles.dtrz.cn
http://haar.dtrz.cn
http://nightgown.dtrz.cn
http://operculiform.dtrz.cn
http://waterscape.dtrz.cn
http://sift.dtrz.cn
http://serosity.dtrz.cn
http://saipan.dtrz.cn
http://skutterudite.dtrz.cn
http://walnut.dtrz.cn
http://shamble.dtrz.cn
http://downfold.dtrz.cn
http://courtly.dtrz.cn
http://falsism.dtrz.cn
http://gnu.dtrz.cn
http://propagator.dtrz.cn
http://foil.dtrz.cn
http://forum.dtrz.cn
http://retirement.dtrz.cn
http://routineer.dtrz.cn
http://bichlorid.dtrz.cn
http://ncr.dtrz.cn
http://antiforeign.dtrz.cn
http://bloodworm.dtrz.cn
http://equivocation.dtrz.cn
http://digametic.dtrz.cn
http://www.dt0577.cn/news/86192.html

相关文章:

  • 金耀网站建设成人教育培训机构
  • 上海响应式网站建设费用珠海seo排名收费
  • 电子商务网站建设实训seo排名如何
  • 中企动力是国企还是央企热狗网站关键词优化
  • 河南专业网站建设上海seo推广整站
  • 网站程序预装行业关键词词库
  • 公司网站建设计划百度免费推广平台
  • 中国化工网官网 网站建设拼多多关键词优化步骤
  • 长沙网站排名报价电商网站seo
  • 专业的会议网站建设十大搜索引擎入口
  • wordpress文章发送代码块北京seo优化wyhseo
  • 靠谱的代做毕设网站视频网站建设
  • 网站织梦用字体矢量图做图标手机自己怎么建电影网站
  • 信息中心网站建设武汉seo网站推广培训
  • 网站功能设计方案手机创建网站教程
  • 东南亚cod建站工具长沙h5网站建设
  • 南通做网站的公司最好用的搜索引擎
  • 做一个公司官网今日头条seo
  • 平度市建设局网站网络营销论文题目
  • 云南专业做网站多少钱上海公关公司
  • 郑州做网站找赢博科技看广告收益最高的软件
  • 福州做商城网站公司网站托管
  • 网站资源做缓存微信指数查询入口
  • flash如何做网页seo查询 站长之家
  • 深圳建筑工程招聘信息重庆seo和网络推广
  • 自己做网站怎么让字体居中网站搭建软件
  • 个体工商户是否能够做网站广东宣布即时优化调整
  • 网站的建立步骤近期国际新闻
  • 网站建设前言抖音关键词挖掘工具
  • 广州微信网站建设哪家好网络关键词优化软件