javascript编程实现栈的方法详解【经典数据结构】


Posted in Javascript onApril 11, 2017

本文实例讲述了javascript编程实现栈的方法。分享给大家供大家参考,具体如下:

栈是限定仅在表尾进行插入或删除操作的线性表,栈是先进后出的。栈的表尾称为栈顶(top),而表头端称为栈底(bottom)。

和线性表类似,栈也有两种存储表示方法,顺序栈链栈

这里讲一下顺序栈,设置指针top指示栈顶元素在顺序栈中的位置。通常的做法就是以top=0表示空栈。base为栈底指针,top为栈顶指针

如果base为null,则表示栈结构不存在,如果top=base则表示空栈。每当插入一个新的元素,top+1,删除元素,top-1。因此,非空栈中top始终在栈顶元素的下一位置上。

如下图所示

javascript编程实现栈的方法详解【经典数据结构】

JavaScript中自带了数组的push和pop方法,其原理无非就是数组最后继续添加和删除数组最后一个元素。这里我们自己实现一遍栈的操作,代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JS栈</title>
  </head>
  <body>
    <script type="text/javascript">
    function Stack(count){
      var top=-1;//top头指针
      this.myArray=new Array();
      if(count!=undefined){
        this.count=count;
        this.myArray=new Array(this.count);
      }else{
        this.count=0;
      }
      //入栈
      this.In=function(value){
        if(top==this.count){
          return false;
        }else{
          ++top;
          this.myArray[top]=value;
          return true;
        }
        return false;
      }
      //出栈
      this.Out=function(){
        if(top==-1){
          return false;
        }else{
          var removeValue=this.myArray[top];
          this.myArray[top]=null;
          top--;
          return removeValue;
        }
      }
      this.Clear=function(){
        this.top=-1;
      }
      //遍历栈
      this.tostring=function(){
        for(var i=0;i<this.myArray.length;i++){
          document.write(this.myArray[i]+'<br>');
        }
      }
    }
    Stack(3);
    In(1);
    In(2);
    In(3);
    tostring();//1 2 3
    Out();
    Out();
    tostring();//1 null null
    In(4);
    tostring();//1 4 null
    </script>
  </body>
</html>

首先需要定义头指针

function Stack(count){
 var top=-1;//top头指针
 this.myArray=new Array();
 if(count!=undefined){
  this.count=count;
  this.myArray=new Array(this.count);
 }else{
  this.count=0;
 }

然后是入栈操作

//入栈
this.In=function(value){
  if(top==this.count){
   return false;
  }else{
   ++top;
   this.myArray[top]=value;
   return true;
  }
  return false;
}

出栈操作

//出栈
this.Out=function(){
  if(top==-1){
   return false;
  }else{
   var removeValue=this.myArray[top];
   this.myArray[top]=null;
   top--;
   return removeValue;
  }
}

链栈的操作和链表类似,这里就不做详细介绍了。

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

Javascript 相关文章推荐
JavaScript方法和技巧大全
Dec 27 Javascript
jquery的ajax跨域请求原理和示例
May 08 Javascript
JavaScript简介
Feb 15 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
javascript实现简单的可随机变色网页计算器示例
Dec 30 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
Aug 16 Javascript
原生JS实现小小的音乐播放器
Oct 16 Javascript
javascript+html5+css3自定义弹出窗口效果
Oct 26 Javascript
JavaScript中七种流行的开源机器学习框架
Oct 11 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 Javascript
Node.js API详解之 dgram模块用法实例分析
Jun 05 Javascript
原生js实现下拉框选择组件
Jan 20 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
Apr 11 #Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
Apr 11 #Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 #Javascript
基于vuejs实现一个todolist项目
Apr 11 #Javascript
vue实现todolist单页面应用
Apr 11 #Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 #Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
Apr 11 #Javascript
You might like
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
python Pygame的具体使用讲解
2017/11/03 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
python 操作hive pyhs2方式
2019/12/21 Python
基于python实现文件加密功能
2020/01/06 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
小学生植树节活动总结
2014/07/04 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
毕业生学校组织意见
2015/06/04 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
基于PyQt5制作一个群发邮件工具
2022/04/08 Python