博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript实现数据结构中的栈结构
阅读量:6452 次
发布时间:2019-06-23

本文共 1460 字,大约阅读时间需要 4 分钟。

在javascript中,一些利用原本数组没法轻易解决的问题,其实也是可以通过模拟数据结构来解决问题的,并非是说前端就不需要去学数据结构与算法,懂得数据结构的前端才是真的程序员。

下面简单地用javascript来实现数据结构中的栈结构,栈结构的先入后出性质在解决某些数据问题时很有用

  • 栈的构造函数
function Stack() {    this.dataStore = [];    this.top = 0;    this.push = push;    this.pop = pop;    this.peek = peek;    this.clear = clear;    this.length = length;}
  • 从栈顶放入某个元素
function push(element) {    this.dataStore[this.top++] = element;}
  • 从栈顶取出某个元素
function pop() {    return this.dataStore[--this.top]}
  • 获得栈的高度
function length() {    return this.top;}
  • 清空整个栈
function clear() {    this.top = 0;}
  • 改变栈顶的位置
function peek() {   return this.dataStore[this.top - 1];}
下面是一个有趣的例子 利用stack类实现10进制转换为其它进制
function mulBase(num, base) {    let s = new Stack();    do {        s.push(num % base);        num = Math.floor(num /= base);    } while (num > 0);    let content = '';    while (s.length() > 0) {        content += s.pop();    }    return content;}
将10进制数9转换为2进制数1001 print(mulBase(9, 2));
又是一个有趣的例子,用栈来判断是否是回文,回文就是一个字符串,从前往后写跟从后往前写都是一样的 例如'racecar','data'
function isPalindrome(word) {        let s = new Stack();        for (let i = 0; i < word.length; i++) {            s.push(word[i]);        }        let rword = '';        while (s.length() > 0) {            rword += s.pop();        }        if (word == rword) {            return true;        } else {            return false;        }    }
判断racecar是否是回文 print(isPalindrome('racecar'));用栈可以实现很多方便的功能,可以见得前端了解数据结构尤为重要。

欢迎评论以及留言,同时欢迎关注我的博客定时不断地更新我的文章

转载地址:http://nmgwo.baihongyu.com/

你可能感兴趣的文章
(转)CSS的display属性
查看>>
如何在目录中查找具有指定字符串的文件(shell)
查看>>
安卓学习笔记2
查看>>
angularJs按需加载代码(未验证)
查看>>
选择排序
查看>>
DotNet(C#)自定义运行时窗体设计器 一
查看>>
P2627 修剪草坪[dp][单调队列]
查看>>
JS详细入门教程(上)
查看>>
Android学习笔记21-ImageView获取网络图片
查看>>
线段树分治
查看>>
git代码冲突
查看>>
lnmp1.3 配置pathinfo---thinkphp3.2 亲测有效
查看>>
查看Linux 系统的配置和增减用户/增减组/增减权限
查看>>
利用android studio 生成 JNI需要的动态库so文件
查看>>
poll
查看>>
衡量优秀的卓越的前端工程师
查看>>
解析查询 queryString 请求参数的函数
查看>>
学生选课系统数据存文件
查看>>
flutter进行自动编译操作步骤
查看>>
4.6 直接插入排序法
查看>>