JavaScript数据结构-栈

146 阅读1分钟

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

特点: 后进先出

// class
class Stack{
    constructor(){
        this.items = []
    }
    // 移除栈顶的元素
    pop(){
       return this.items.pop()
    }
    // 向栈顶添加元素
    push(element){
        return this.items.push(element)
    }
    // 查看栈顶元素
    peek(){
        return this.items[this.size() - 1]
    }
    // 返回栈里元素的个数
    size(){
        return this.items.length
    }
    // 移除栈里所有元素
    clear(){
        this.items = []
    }
    // 判断栈里元素个数是否为0
    isEmpty(){
        return this.items.length === 0
    }
}

// function
function Stack(){
    this.items = []
}

Stack.prototype.pop(){
    return this.items.pop()
}

Stack.prototype.push(element){
    return this.items.push(element)
}

Stack.prototype.peek(){
	return this.items[this.size() - 1]
}

Stack.prototype.isEmpty(){
    return this.items.length === 0
}

Stack.prototype.size(){
	return this.items.length
}

Stack.prototype.clear(){
    this.items = []
}