js数据结构-栈

133 阅读1分钟

1.基础的栈构造函数

// 栈
function Stack() {
    const items = [];
    this.push = (ele) => {
        items.push(ele);
        return items.length;
    }
    this.pop = () => {
        return items.pop();
    }
    this.peek = () => {
        return items[items.length-1];
    }
    this.isEmpty = () => {
        return items.length === 0;
    }
    this.size = () => {
        return items.length;
    }
    this.clear = () => {
        return items = [];
    }
    this.print = () => {
        console.log(items);
    }
}

2. 十进制转化二进制

function divideBy2(decNumber) {
    let result = '';
    const remStack = new Stack(); // 余数堆栈
    let rem = 0; 
    while(decNumber > 0) {
        rem = decNumber % 2;
        remStack.push(rem);
        decNumber = Math.floor(decNumber / 2);
    }
    while(!remStack.isEmpty()) {
        result += remStack.pop();
    }
    return result+'(2)';

}
divideBy2(10);

3.十进制转化任何其他的进制

 function divideByBase(decNumber, base) {
    let result = '';
    const remStack = new Stack();
    let rem = 0;
    const dig = '0123456789ABCDEF';
    while(decNumber > 0) {
        rem = decNumber % base;
        remStack.push(rem);
        decNumber = Math.floor(decNumber / base);
    }
    while(!remStack.isEmpty()) {
        result += dig[remStack.pop()];
    }
    return `${result}(${base})`;
}