前言
数据结构是一种存储数据之间的逻辑结构,
合适的数据结构可以带来更高的运行效率和存储效率,
与相应解决实际问题算法的适应性也就越高,
算法和数据结构往往是互不分开的。
离开了算法,数据结构就显得毫无意义,而没有了数据结构,算法就没有实现的条件。
什么是栈
简单来说就是让数据先进的后出来,有人问这有什么用呢?
递归算法就是栈的典型应用。
function Stack(){
//栈中的属性
this.items = []
//栈相关操作
//将元素压入
// this.push = function(){} 这种方式相当于给某一个对象的实例添加了一个方法
//下面的相当于给整个类添加这个方法,所以推荐下面节省空间
Stack.prototype.push = function(element){
this.items.push(element)
}
//从栈中取出元素
Stack.prototype.pop = function(){
return this.items.pop()
}
//查看栈顶元素
Stack.prototype.peek = function(){
return this.items[this.items.length-1]
}
//判断是否为空
Stack.prototype.isEmpty = function(){
return this.items.length === 0
}
//获取元素个数
Stack.prototype.size = function(){
return this.items.length
}
//tostring方法
Stack.prototype.toString = function(){
var resultString = ''
for(var i = 0;i < this.items.length; i++){
resultString += this.items[i] + ' '
}
return resultString
}
}
//栈的使用
var s = new Stack()
s.push('123')
s.push('456')
console.log(s.toString())
console.log(s.pop())
console.log(s.peek())
console.log(s.isEmpty())
console.log(s.size())
//十进制转二进制的应用
function dec2bin(num){
var stack = new Stack()
while(num > 0){
stack.push(num % 2)
num = Math.floor(num / 2)
}
var binString = ''
while(!stack.isEmpty()){
binString += stack.pop()
}
return binString
}
console.log(dec2bin(100))
链接: javascript实现数据结构(队列).