数据结构-使用ts创建一个栈

91 阅读1分钟

tips:使用数组的时候,大部分方法的时间复杂度一般是O(n)。O(n)的意思是,我们需要迭代整个数组直到找到要找的那个元素,再最坏的情况下需要迭代数组的所有位置,n代表的数据的长度。

利用数组创建栈

class Stack<T> {
    constructor() {
        this.arr = []
    }
    arr: T[]
    // 向栈底部推入一个数据
    push(item: T) {
        this.arr.push(item)
    }

    // 取出栈顶
    pop() {
        let a = this.arr.pop()
        return a as T
    }

    // 查看栈顶元素
    peek() {
        return this.arr[this.arr.length]
    }

    size() {
        return this.arr.length
    }

    isEmpty() {
        return !!(!this.arr.length)
    }

    clear() {
        this.arr = []
    }
    getValue() {
       return this.arr
    }
}

使用Stack实现十进制与其他进制之间的转化

/**
 * 使用Stack实现十进制与其他进制之间的转化
 * @param {number} num 
 * @param base 
 */
function decimalismConversion(num: number, base: number) {
    const digits:string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    const stack = new Stack<number>()
    let myString: string = ''
    if (base >= 2 && base <= 36) {
        while (num > 0) {
            const index = num % base
            stack.push(index)
            num = Math.floor(num / base)

        }
        while (!stack.isEmpty()) {
            myString += digits[stack.pop()]
        }
        return myString
    } else {
        return 'Error'
    }
}

console.log(decimalismConversion(10, 2)  // 1010
)```