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 相关文章推荐
不错的新闻标题颜色效果
Dec 10 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
Jan 20 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
jquery选择器大全 全面详解jquery选择器
Mar 06 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
JavaScript中获取高度和宽度函数总结
Oct 08 Javascript
scrollWidth,clientWidth,offsetWidth的区别
Jan 13 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 Javascript
vue源码解析之事件机制原理
Apr 21 Javascript
详解浏览器缓存和webpack缓存配置
Jul 06 Javascript
angular4笔记系列之内置指令小结
Nov 09 Javascript
使用vue-cli webpack 快速搭建项目的代码
Nov 21 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 If Else(elsefi) 语句
2013/04/07 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
python解析模块(ConfigParser)使用方法
2013/12/10 Python
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Python实现图片添加文字
2019/11/26 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
2015年元旦文艺汇演主持词
2014/03/26 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
教师演讲稿大全
2014/05/16 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
MySQL 条件查询的常用操作
2022/04/28 MySQL