js算法基础-栈结构的封装和进制转换
作者:互联网
先是栈结构的封装,使用es6的方式。
#items为栈结构 #表示类的私有属性,外部不能直接访问和修改。
push 压栈
pop 出栈
peek 查看栈顶
isEmpty 栈是否为空
size 栈内元素个数
toString 字符串形式返回栈内容
/** * 栈结构的封装 */ class Stack { //私有属性 栈 #items = [] //压栈操作,往栈里面添加元素 push(item) { this.#items.push(item); } //出栈操作,从栈中取出元素,并返回取出的那个元素 pop() { return this.#items.pop(); } //查看栈顶元素 peek() { return this.#items[this.#items.length - 1]; } //判断栈是否为空 isEmpty() { return this.#items.length === 0; } //获取栈中元素个数 size() { return this.#items.length; } //返回以字符串形式的栈内元素数据 toString() { let result = ''; for (let item of this.#items) { result += item + ' '; } return result; } } /** * 10进制转其他进制 */ function baseConverter(decNumber, base) { const remStack = new Stack(); const digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; let number = decNumber; let rem; let baseString = ''; if (!(base >= 2 && base <= 36)) { return ''; } while (number > 0) { rem = Math.floor(number % base);//取余 remStack.push(rem); number = Math.floor(number / base); } while (!remStack.isEmpty()) { baseString += digits[remStack.pop()]; } return baseString; } console.log( baseConverter('555', 2),//转2进制 1000101011 baseConverter('555', 8),//转8进制 1053 baseConverter('555', 16),//转16进制 22B )
标签:return,进制,items,.#,js,base,let,封装 来源: https://www.cnblogs.com/wuhairui/p/16595819.html