美文网首页数据结构
数据结构题目32:顺序堆栈操作

数据结构题目32:顺序堆栈操作

作者: 玲儿珑 | 来源:发表于2020-05-06 19:19 被阅读0次
    1. 初始化一个堆栈
    var M = 20
    function initials() {
        var stackObj = {
            stack : new Array(M),
            top : -1
        }
        return stackObj
    }
    
    1. 测试堆栈是否为空
    function emptys(top) {
        return top == -1
    }
    
    1. 测试堆栈是否已满
    function fulls(top) {
        return top == M-1
    }
    
    1. 取当前栈顶元素
      将当前栈顶元素取出赋值变量返回。此操作不改变栈顶指针的位置。
    function getTops(stackObj) {
        if (emptys(stackObj.top)) {
            return 0
        } else {
            return stackObj.stack[stackObj.top]
        }
    }
    
    1. 插入(进栈)
      此算法在容量为M的堆栈中插入一个新的元素item,栈顶元素的位置由top指出。
    function push(stackObj, item) {
        if (fulls(stackObj.top)) {
            return 0
        } else {
            stackObj.stack[++stackObj.top] = item
            return stackObj
            // return 1
        }
    }
    
    1. 删除(退栈)
      此算法从堆栈中退出当前栈顶元素,并保存在变量item中返回,同时修改栈顶指针的位置。
      有必要说明一下,所谓删除,只是将栈顶指针“下退”一个位置,原来的栈顶元素就被认为不包括在堆栈中了(实际山该元素还占据原来的位置,当有新的数据元素进栈时就会将其“冲掉”)。
    function pop(stackObj) {
        if (emptys(stackObj.top)) {
            return 0
        } else {
            let item = stackObj.stack[stackObj.top--]
            return item
            // return 1
        }
    }
    

    测试:

    //初始化堆栈
    var stackObj = initials()
    console.log(stackObj)
    //填充堆栈
    push(stackObj, 1)
    push(stackObj, 2)
    push(stackObj, 3)
    push(stackObj, 4)
    push(stackObj, 5)
    //删除堆栈
    pop(stackObj)
    //取出栈顶元素
    getTops(stackObj)
    

    相关文章

      网友评论

        本文标题:数据结构题目32:顺序堆栈操作

        本文链接:https://www.haomeiwen.com/subject/zxhgghtx.html