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 相关文章推荐
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
Express作者TJ告别Node.js奔向Go
Jul 14 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
Jan 05 Javascript
javascript实现checkbox复选框实例代码
Jan 10 Javascript
JS随机打乱数组的方法小结
Jun 22 Javascript
js运动事件函数详解
Oct 21 Javascript
jQuery实现联动下拉列表查询框
Jan 04 Javascript
easyui-datagrid特殊字符不能显示的处理方法
Apr 12 Javascript
基于JavaScript实现报警器提示音效果
Oct 27 Javascript
javascript系统时间设置操作示例
Jun 17 Javascript
JavaScript this在函数中的指向及实例详解
Oct 14 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下escape解码函数的实现方法
2010/08/08 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
PHP答题类应用接口实例
2015/02/09 PHP
8个必备的PHP功能开发
2015/10/02 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
Python greenlet实现原理和使用示例
2014/09/24 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python实现八大排序算法
2016/08/13 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Python OS模块实例详解
2019/04/15 Python
python反扒机制的5种解决方法
2021/02/06 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
如何使用PHP session
2015/04/21 面试题
HashMap和Hashtable的区别
2013/05/18 面试题
灰雀教学反思
2014/04/28 职场文书
女生节标语
2014/06/26 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python