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 )
博客园作者:herry菌朋友,看到这里,关注作者的公众号吧,不漏掉更新哦
![]()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!