(js描述的)数据结构[栈结构](2)

(js描述的)数据结构[栈结构](2)

一.什么是栈结构

1.一种受限制的线性结构,这种结构可以基于数组来实现。
2.可以抽象成一个容器,上面的是栈顶,底下的是栈底。所以仅允许对栈顶进行操作,

二.栈结构的应用

1.函数式调用栈:基于栈的形式来进行函数的整体调用。
2.递归:栈溢出就是其中的一点。

三. 栈结构常见的操作

  1. push(): 添加一个元素到栈顶。
  2. pop(): 移除栈顶的元素。
  3. peek(): 返回栈顶的元素,不对栈结构做任何的修改。
  4. isEmpty(): 判断栈是否为空,不空的话返回 true, 空的话返回 false。
  5. size(): 返回栈里的元素个数。
  6. toString():将栈内容以字符串的方式的返回。

四.用代码封装栈结构

function Stack() {
        this.items = []
        this.prototype.push = function(element) {
            this.items.push(element)
        }
        this.prototype.pop = function() {
            return this.items.pop()
        }
        this.prototype.peek = function () {
            return this.items[this.items.length - 1]
        }
        this.prototype.isEmpty = function () {
            if (this.items.length === 0) {
                return false
            }
            return true
        }
        this.prototype.size = function () {
            return this.items.length
        }
        this.prototype.toString = function() {
            var str = ''
            for (var i=0; i< this.items.length; i++) {
                str += this.items[i] + ' '
            }
            return str
        }
    }
    var s = new Stack()

五.应用

十进制转二进制

function dec2bin(decNumber) {
        var binStack = new Stack()

        while (decNumber > 0) {
            binStack.push(decNumber % 2 )
            decNumber = Math.floor(decNumber / 2)
        }
        var binAryString = ''
        while (!binStack.isEmpty()) {
            binAryString += binStack.pop()
        }
        return binAryString
    }
posted @ 2020-03-30 22:02  jacksonni  阅读(165)  评论(0编辑  收藏  举报