用JS实现对栈的操作

不问归期 提交于 2020-01-13 09:58:40

用JS实现对栈的操作

栈的结构:栈底、栈顶(栈是一种后入先出的结构)lifo(last_in_first_out)
栈的操作:入栈、出栈
栈的方法:

push     //栈顶添加元素
pop      // 拿出栈顶元素
peek     // 查看栈顶元素
isEmpty  // 检查栈是否为空
clear    // 移除栈的全部元素
size     //获取栈的长度

下面通过Js模拟对于栈的操作,对栈有一个比较直观的感受
构造一个栈的结构
函数自带两种功能,一种是函数,一种是构造器
函数内部使用 this,则this指向构造的对象,因此在如下结构中若是用this则是定义一种共有方法或变量

var Stack = function(){
    var item = []
// 栈顶添加元素
    this.push = function(element){
        item.push(element)
    } 
// 拿出栈顶元素
    this.pop = function(){
        return item.pop();
    }
// 查看栈顶元素
    this.peek = function(){
        return item[item.length - 1]
    }
// 清空栈元素
    this.clear = function(){
        item = []
    }
// 检查栈是否为空
    this.isEmpty = function(){
        return item.length == 0;
    }

// 获取栈的长度
    this.size = function(){
        return item.length;
    }
}

下面在Chrome调试查看对于栈的操作
新建一个html文件,并引用js代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="zhan.js"></script>
</head>
<body>
</body>
</html>

打开chrome调试,通过查看以下内容,可以发现,已经成功的实现了栈的功能

var s = new Stack()
s.push(1)
s.push(3)
s.push(8)
s.push(9)
s.peek()  // 9
s.pop()   // 9
s.peek()   // 8
s.size()  // 3
s.isEmpty() // false
s.clear()  
s.peek()   // undefined  因为栈内元素被清空,因此返回栈顶元素为undefined

在这里插入图片描述
代码实践,将十进制数转换为2进制数

var change = function(num){
var stack = new Stack()
 while (num > 0) {
            let yushu = num % 2
            stack .push(yushu)
            num = Math.floor(num / 2)
        }
        let string = ''
        while (!stack.is_empty()) {
            string += stack.pop()
        }
        return string;
}
change(1000)   // '1111101000'

队列:先进先出 fifo (first_in_first_out)
向数组第一个位置添加元素:

array.unshift() // 返回最新的数组长度
var array = [1,2,3]
var new_arr = array.unshift(4) 
console.log(new_arr ) // 4
console.log(array) // [4, 1, 2, 3]

删除数组第一个元素

array.shift()  // 返回被删除元素
var array = [1,2,3]
var new_arr = array.shift() 
console.log(new_arr ) // 1
console.log(array)  // [2, 3]
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!