JavaScript使用数组实现一个栈

355 阅读1分钟

栈是一种后进先出的数据结构,JavaScript没有栈结构,可以使用数组进行模拟;

基本功能

  • size() 获取栈长度
  • peek() 获取栈顶元素
  • push() 入栈
  • pop() 出栈
  • clear() 清空栈

不使用数组原生方法,使用计数完成功能

/**
 * value 栈
 * size 返回栈长度
 * peek 返回栈顶元素,不会修改栈
 * push 添加新元素到栈顶,返回栈长度
 * pop 移除栈顶元素,同时返回被移除的元素
 * clear 清空栈内元素
 * @class Stack
 */

const stack = Symbol('stack')
const count = Symbol('count')

class Stack {
    constructor() {
        this[stack] = []
        this[count] = 0
    }

    value() {
        return this[stack]
    }

    size() {
        return this[count]
    }

    isEmpty() {
        return this[count] === 0
    }

    peek() {
        if (this.isEmpty()) {
            console.log('栈为空')
            return
        }
        return this[stack][this[count] - 1]
    }

    push(item) {
        this[stack][this[count]] = item
        this[count]++
        return this[count]
    }

    pop() {
        const temp = this[stack][this[count] - 1]
        delete this[stack][--this[count]]
        return temp
    }

    clear() {
        this[stack] = []
        this[count] = 0
    }
}