博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js数据结构之栈
阅读量:5745 次
发布时间:2019-06-18

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

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈通常的操作:

stack()        // 创建一个空的栈对象push()         // 入栈操作,将元素放至栈顶pop()          // 出栈操作,将栈顶元素移除并返回peek()         // 返回栈顶元素,不对栈做出操作isEmpty()      // 判断栈是不是为空size()         // 返回栈的元素个数

使用javascript模拟栈的实现:

function Stack () {  let items = []  this.push = function (element) {    //添加一个(或几个)新元素到栈顶    items.push(element)  }  this.pop = function () {    //移除栈顶的元素,同时返回被移除元素    return items.pop()  }  this.peek = function () {    //返回栈顶的元素,但并不对栈做任何修改    return items[items.length - 1]  }  this.isEmpty = function () {    // 判断栈是不是为空    return items.length === 0  }  this.size = function () {    // 返回栈里元素的个数    return items.length  }  this.clear = function () {    // 移除栈里所有的元素    items = []  }  this.print = function () {    console.log(items.toString())  }  this.toString = function () {    return items.toString()  }}

用栈解决进制数转换问题:

function divide (num, base) {   // num为需要转换的数, base为要转换的基数  let remStack = new Stack(),      rem,      remString = ''  while (num > 0) {    rem = Math.floor(num % base)    remStack.push(rem)    num = Math.floor(num / base)  }  while (!remStack.isEmpty()) {    remString += remStack.pop()  }  return remString}console.log(divide(18,16))

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

你可能感兴趣的文章
[EntLib]关于SR.Strings的使用办法[加了下载地址]
查看>>
中小型网站架构分析及优化
查看>>
写shell的事情
查看>>
负载均衡之Haproxy配置详解(及httpd配置)
查看>>
linux虚拟机拷贝之后联网出错
查看>>
Linux文件系统探索
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
查找恶意的TOR中继节点
查看>>
MAVEN 属性定义与使用
查看>>
hadoop2.7.2 HA搭建
查看>>
shell高级视频答学生while循环问题
查看>>
无法SSH到Ubuntu
查看>>
使用@media实现IE hack的方法
查看>>
《11招玩转网络安全》之第一招:Docker For Docker
查看>>
hive_0.11中文用户手册
查看>>
hiveserver2修改线程数
查看>>
XML教程
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>