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 命名规则 变量命名规则
Feb 25 Javascript
Jquery Autocomplete 结合asp.net使用要点
Oct 29 Javascript
二叉树的非递归后序遍历算法实例详解
Feb 07 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
May 05 Javascript
form.submit()不能提交表单的原因分析
Oct 23 Javascript
JS两种类型的表单提交方法实例分析
Nov 28 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
JavaScript实现随机点名器实例详解
May 07 Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 Javascript
微信小程序8种数据通信的方式小结
Feb 03 Javascript
vue-cli3单页构建大型项目方案
Apr 07 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
PHP简单实现断点续传下载的方法
2015/09/25 PHP
精通Javascript系列之数值计算
2011/06/07 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
python简单程序读取串口信息的方法
2015/03/13 Python
python从入门到精通(DAY 2)
2015/12/20 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
django中forms组件的使用与注意
2019/07/08 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
酒吧创业计划书
2014/01/18 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
经费申请报告
2015/05/15 职场文书
元宵节晚会主持词
2015/07/01 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang