数据结构之栈(Stack)的实现/封装--JavaScript

本文介绍如何使用JavaScript实现栈(Stack)的数据结构,并封装相关操作如push、pop等。同时,通过栈实现十进制数到二进制数的转换,提供具体代码示例及测试。

数据结构之栈(Stack)的实现/封装与应用–JavaScript

1.基于数组实现Stack栈的封装

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<script>
    // 封装栈类
    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(20)
    // s.push(10)
    // s.push(100)
    // alert(s)
    // s.pop()
    // alert(s)
    // s.peek()
    // alert(s.toString())
    /****************************/
</script>
</body>
</html>

2.栈(Stack)的应用---------十进制数转化为二进制数

// 十进制转化为二进制函数
    function dec2bin(decNumber){
        var stack = new Stack()
        while(decNumber > 0){
            stack.push(decNumber%2)
            decNumber = Math.floor(decNumber / 2)
        }
        var binaryString = ''
        while(!stack.isEmpty()){
            binaryString  += stack.pop()
        }
        return binaryString
    }
    /**********测试代码**************/
    // alert(dec2bin(100))
    // alert(dec2bin(8))
    /*******************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值