数据结构

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

2020-05-06  本文已影响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)
上一篇下一篇

猜你喜欢

热点阅读