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 相关文章推荐
Javascript学习指南
Dec 01 Javascript
javascript正则表达式基础知识入门
Apr 20 Javascript
实例详解JavaScript获取链接参数的方法
Jan 01 Javascript
jQuery取消特定的click事件
Feb 29 Javascript
微信分享调用jssdk实例
Jun 08 Javascript
微信小程序的分类页面制作
Jun 27 Javascript
理解 javascript 中的函数表达式与函数声明
Jul 07 Javascript
jQuery实现用户信息表格的添加和删除功能
Sep 12 jQuery
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
基于ionic实现下拉刷新功能
May 10 Javascript
js对象数组和对象的使用实例详解
Aug 27 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
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
PHP可变变量学习小结
2015/11/29 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
Vue filters过滤器的使用方法
2017/07/14 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
浅谈Python的文件类型
2016/05/30 Python
Python中常见的异常总结
2018/02/20 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
关于Python作用域自学总结
2019/06/10 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
浅析matlab中imadjust函数
2020/02/27 Python
python中如何打包用户自定义模块
2020/09/23 Python
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
澳洲的服装老品牌:SABA
2018/02/06 全球购物
市政工程技术专业自荐书
2014/07/06 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
平安建设汇报材料
2014/12/29 职场文书
给老婆的道歉信
2015/01/20 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技