一、栈的定义
一种后进先出的数据结构。
- 栈顶是个开口,可以放入元素即push(),移除元素即pop()。
- 栈底封闭,不能操作元素。
如同一个杯子
二、栈的方法
三、js实现栈的方法
//创建一个函数构造器,用来创建对象
var Stack = function(){
//可以以数组模拟栈,首元素为栈底,尾元素为栈顶
var items = []
//入栈 从栈顶进入一个元素
this.push = function(element){
return items.push(element)
}
//出栈 从栈顶移除一个元素
this.pop = function(){
return items.pop()
}
//peek 查看栈顶元素
this.peek = function(){
return items[items.length - 1]
}
//查看栈有多少个元素
this.size = function(){
return items.length
}
//判断栈是否为空
this.isEmpty = function(){
return items.length == 0
}
//清空栈
this.clear = function(){
items = []
}
//查看数组
this.getItems = function(){
return items
}
}
三、实例演战
- 将十进制转换为二进制
代码如下:
//接上面代码
//声明定义一个函数,用来十进制转换二进制![QQ截图20200730124609.png](/img/bVbKuix)
var transform = function(number){
//创建一个Stack对象
var dtb = new Stack()
var string = ''
//将number除2得到的余数,放入到栈顶,也就是数组尾元素
while(number > 0){
var remainder = number % 2
dtb.push(remainder)
number = Math.floor(number / 2)
}
//判断栈是否为空,不为空则移除栈顶元素。
while(!dtb.isEmpty()){
//把移除的栈顶元素拼接成一个字符串
string += dtb.pop()
}
return string
}
运行结果