JS实现利用两个队列表示一个栈的方法


Posted in Javascript onDecember 13, 2017

本文实例讲述了JS实现利用两个队列表示一个栈的方法。分享给大家供大家参考,具体如下:

先看原理图:

JS实现利用两个队列表示一个栈的方法

理清楚思路,再动笔写:

<!DOCTYPE html>
<html>
<head>
  <title>2 Queue</title>
  <meta charset="utf-8"/>
  <script type="text/javascript">
  var arr1 = [];
  var arr2 = [];
    function Queue(arr){
      this.push = function(element){
        return arr.push(element);
      }
      this.pop = function(){
        return arr.shift();
      }
      this.size = function(){
        return arr.length;
      }
      this.display = function(){
        console.log(arr);
      }
    }
    var queue1 = new Queue(arr1);
    queue1.push(1);
    queue1.push(4);
    queue1.push(5);
    queue1.push(7);
    queue1.display();
    var queue2 = new Queue(arr2);
    //利用两个队列实现栈。放在数组中打印
    var res = [], k = 0;
    while(queue1.size()!=0){
      var len = queue1.size();
      for(var i = 0; i<len-1; i++){
        queue2.push(queue1.pop());
      }
      // 打印queue1最后一个元素,并出队
      res[k] = queue1.pop();
      ++k;
      // 队列2的元素放置到队列1中
      for(var i = 0; i<len-1; i++){
        queue1.push(queue2.pop());
      }
    }
    console.log("res:" + res);
    //利用两个队列实现栈。单个弹出
    while(queue1.size()!=0){
      var len = queue1.size();
      for(var i = 0; i<len-1; i++){
        queue2.push(queue1.pop());
      }
      // 打印queue1最后一个元素,并出队
      console.log(queue1.pop());
      // 队列2的元素放置到队列1中
      for(var i = 0; i<len-1; i++){
        queue1.push(queue2.pop());
      }
    }
  </script>
</head>
<body>
</body>
</html>

运行结果:

JS实现利用两个队列表示一个栈的方法

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
Apr 20 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
Apr 09 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
javascript如何定义对象数组
Jun 07 Javascript
js中的面向对象入门
Mar 06 Javascript
详解webpack解惑:require的五种用法
Jun 09 Javascript
javascript性能优化之分时函数的介绍
Mar 28 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
Apr 07 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 Javascript
微信小程序onShareTimeline()实现分享朋友圈
Jan 07 Javascript
如何在现代JavaScript中编写异步任务
Jan 31 Javascript
node vue项目开发之前后端分离实战记录
Dec 13 #Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 #Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 #Javascript
Angular4编程之表单响应功能示例
Dec 13 #Javascript
详解webpack require.ensure与require AMD的区别
Dec 13 #Javascript
vue登录路由验证的实现
Dec 13 #Javascript
vue按需加载组件webpack require.ensure的方法
Dec 13 #Javascript
You might like
header跳转和include包含问题详解
2012/09/08 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
2019/11/05 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
python直接访问私有属性的简单方法
2016/07/25 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
用Eclipse写python程序
2018/02/10 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
解决Python安装cryptography报错问题
2020/09/03 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
英国在线药房:Express Chemist
2019/03/28 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
境外导游求职信
2014/02/27 职场文书
气象学专业个人求职信
2014/03/15 职场文书
财产分割协议书范本
2014/11/03 职场文书
入党后的感想
2015/08/10 职场文书
大学生入党自我鉴定范文
2019/06/21 职场文书
python函数的两种嵌套方法使用
2022/04/02 Python
Redis基本数据类型List常用操作命令
2022/06/01 Redis