摘要:向一个栈插入新元素又称作进栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素从一个栈删除元素又称作出栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈(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))
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/84080.html
摘要:于是翻出了机房里的这本学习数据结构与算法开始学习程序员的基础知识。这本书用了我最熟悉的来实现各种数据结构和算法,而且书很薄,可以说是一本不错的入门教程。队列在头部删除元素,尾部添加元素。 本系列所有文章:第一篇文章:学习数据结构与算法之栈与队列第二篇文章:学习数据结构与算法之链表第三篇文章:学习数据结构与算法之集合第四篇文章:学习数据结构与算法之字典和散列表第五篇文章:学习数据结构与算...
摘要:堆栈算法引子栈是计算机术语中比较重要的概念,实质上栈就是一段内存区域,但是栈满足一定的特性,那就是只有一个口,具有先入后出的特性,这种特性在计算机中有很广泛的运用。 /** * PHP堆栈算法 * Created on 2017-4-27 * Author entner * Email 1185087164@qq.com */ 引子 栈...
摘要:堆栈算法引子栈是计算机术语中比较重要的概念,实质上栈就是一段内存区域,但是栈满足一定的特性,那就是只有一个口,具有先入后出的特性,这种特性在计算机中有很广泛的运用。 /** * PHP堆栈算法 * Created on 2017-4-27 * Author entner * Email 1185087164@qq.com */ 引子 栈...
摘要:另外栈也可以用一维数组或连结串列的形式来完成。压栈就是,出栈就是。出栈成功第个节点是这是单链表形式的栈的源码地址。队列只允许在后端称为进行插入操作,在前端称为进行删除操作。 维基百科 堆栈(英语:stack)又称为栈,是计算机科学中一种特殊的串列形式的抽象资料型别,其特殊之处在于只能允许在链接串列或阵列的一端(称为堆叠顶端指标,英语:top)进行加入数据(英语:push)和输出数据...
摘要:本文力求简洁,只包含基础的栈功能,不想将大片的代码展示出来,让读者兴趣索然,阅读起来也十分费力,如有需要可以自行添加相关功能比如包中的类包含的,等等函数能力有限,有误之处还请不吝赐教定义内部类用于存储栈元素指向下一个栈元素的泛型元素方法方法 本文力求简洁,只包含基础的栈功能,不想将大片的代码展示出来,让读者兴趣索然,阅读起来也十分费力,如有需要可以自行添加相关功能比如java.util...
阅读 4463·2021-11-19 09:59
阅读 3396·2021-10-12 10:12
阅读 2681·2021-09-22 15:25
阅读 3374·2019-08-30 15:55
阅读 1219·2019-08-29 11:27
阅读 1502·2019-08-28 18:06
阅读 2786·2019-08-26 13:41
阅读 2591·2019-08-26 13:41
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要