cuicui.
返回全部文章
Web前端 共约 71 字 预计阅读 1 分钟

数据结构学习-栈

栈结构遵循以下规则

  • 数据从栈顶 (又称为栈尾) 进入
  • 从栈顶退出
  • 遵循后进先出的 LIFO 原则

一个栈应该有以下方法: push pop peek isEmpty size clear toString

封装一个栈

// 一个栈应该有以下方法: push pop peek isEmpty size clear toString

class Stack {
    private stack: unknown[] = [];

    push(data: unknown) {
        this.stack.push(data);
    }
    pop() {
        return this.stack.pop();
    }

    // 返回栈顶元素
    peek() {
        return this.stack[this.stack.length - 1];
    }

    isEmpty() {
        return this.stack.length === 0;
    }
    size() {
        return this.stack.length;
    }
    clear() {
        this.stack = [];
    }
    toString() {
        return this.stack.join("-");
    }
}

const stack = new Stack();

debugger;

应用: 进制转换

import { Stack } from "./stack";

// 进制转换 利用辗转相除法
function convert(DecNumber: number, base: number) {
    const remStack = new Stack();
    const baseString = "0123456789ABCDEF";
    let res = "";
    while (DecNumber > 0) {
        remStack.push(DecNumber % base);
        DecNumber = Math.floor(DecNumber / base);
    }
    while (!remStack.isEmpty()) {
        res += baseString[remStack.pop() as number];
    }
    return res;
}

console.log(convert(1234, 16));