栈的应用一:JavaScript实现数字进制间的相互转换
来源:互联网 发布:仙剑4for mac打不开 编辑:程序博客网 时间:2024/05/19 20:42
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>栈的应用一:数字进制间的相互转换</title></head><body> <input id="num" placeholder="请输入十进制数字"><br/><br/> <input id="base" placeholder="需要转化为的进制数"><br/><br/> <button id="send">生成</button><br/> <div id="result"></div></body><script>//------------------------------------------- 栈的函数实现:实际应用这部分可封装起来------------------------------------//// 属性:// top 栈数组的第一个空位置 = 栈顶元素的位置+1 ,top处是空的,它处于栈顶元素之上 (top从0开始,0代表在栈底,及栈是空的),同时也为了标记哪里可以加入新元素,当向栈内压入元素时, 该变量增大// 即:第 栈顶元素的 数组下标是 top - 1// empty 栈内是否含有元素,用 length 属性也可以达到同样的目的// 方法:// push() 元素入栈,// pop() 元素出栈,(也可以访问栈顶的元素,但是调用该方法后,栈顶元素被删除)// peek() 预览栈顶元素,只返回栈顶元素,不删除它。// length() 返回栈内元素的个数(top应该是等于数组的length的,所以用top属性也可)// clear() 清除栈内所有元素//1.栈类的构造函数function Stack() { this.dataStore = []; //底层数据结构是数组 this.top = 0; //top应该是等于数组的length的 this.push = push; this.pop = pop; this.peek = peek; this.length = length; this.clear = clear;}/** * 2. push() * 向栈中压入一个新元素, 需要将其保存在数组中变量 top 所对 * 应的位置, 然后将 top 值加 1, 让top指向数组中下一个空位置 * 特别注意 ++ 操作符的位置, 它放在 this.top 的后面, 这样新入栈的元素就被放在 * top 的当前值对应的位置, 然后再将变量 top 的值加 1, 指向下一个位置 * */function push(element) { this.dataStore[this.top++] = element;}/** * 3. pop() * pop() 方法恰好与 push() 方法相反——它返回栈顶元素, 同时将变量 top 的值减 1 * 也可以改造一下,只--this.top,不返回栈顶元素 * */function pop() { return this.dataStore[--this.top];}/** * 4. peek() * peek() 方法返回数组的第 top-1 个位置的元素, 即栈顶元素 * */function peek() { return this.dataStore[this.top-1];}function length(){ return this.top;}function clear() { this.top = 0;}/** * 5.测试 Stack 类的实现 * */var s = new Stack();s.push("David");s.push("Raymond");s.push("Bryan");console.log("length: " + s.length());console.log(s.peek());var popped = s.pop();console.log("The popped element is: " + popped);console.log(s.peek());s.push("Cynthia");console.log(s.peek());s.clear();console.log("length: " + s.length());console.log(s.peek());s.push("Clayton");console.log(s.peek());//-----------------------------------------------栈的应用一:数制转换--------------------------------------------//// 利用栈将一个数字从一种数制转换成另一种数制。// 假设想将数字 n 转换为以 b 为基数// 的数字, 实现转换的算法如下:// (1) 最高位为 n % b, 将此位压入栈。// (2) 使用 n/b 代替 n。// (3) 重复步骤 1 和 2, 直到 n 等于 0, 且没有余数。// (4) 持续将栈内元素弹出, 直到栈为空, 依次将这些元素排列, 就得到转换后数字的字符// 串形式。// 下面就是该函数的定义, 可以将十进制的数字转化为二至九进制的数字:function mulBase(num, base) { var s = new Stack(); do { s.push(num % base); num = Math.floor(num /= base); } while (num > 0); var converted = ""; while (s.length() > 0) { converted += s.pop(); } return converted;}var button=document.getElementById("send");button.onclick=function(){var num = document.getElementById("num").value;var base = document.getElementById("base").value;var result= document.getElementById("result");var newNum = mulBase(num, base);result.innerHTML=num + " converted to base " + base + " is " + newNum;//输出: 32 converted to base 2 is 100000 125 converted to base 8 is 175}</script></html>
操作结果
阅读全文
1 0
- 栈的应用一:JavaScript实现数字进制间的相互转换
- JavaScript:数字与字符串的相互转换
- JavaScript 字符串与数字的相互转换
- 使用jiphy实现javascript/python的相互转换
- 用JavaScript实现canvas和image的相互转换
- 字符串和数字的相互转换
- Python字符与数字的相互转换
- 字符串与数字的相互转换
- 数字与百分比之间的相互转换
- Python字符与数字的相互转换
- 字符串和数字之间的相互转换
- Python字符与数字的相互转换
- 中文与数字相互转换的函数
- 字符串和数字的相互转换
- 数字与char之间的相互转换
- 数字和日期之间的相互转换
- 时间段和数字之间的相互转换
- c++ 数字与字符串的相互转换
- VirtualApp技术黑产利用研究报告
- Spark SQL
- Tensorflow[实战篇]——Face Recognition
- thymeleaf自定义工具对象
- Ubuntu 12.04下NFS安装配置图解
- 栈的应用一:JavaScript实现数字进制间的相互转换
- 关于Android系统软键盘
- UI控件 -> Button
- Python基础入门之条件判断和循环二
- Bilibili 移动端组件化实践中的冷启动优化
- Android 工具合集网站
- AsyncTask
- jQuery遍历-同胞
- TP FP TN FN