7 栈结构 十进制转二进制
class Stack{
constructor(){
this.items = [];
}
isEmpty(element){
return element.length === 0 ? true: false;
}
}
const stack = new Stack();
var bin = [], bin2 = '';
function decimal2bin(dec){
while(dec > 1){
bin.push(dec % 2);
dec = Math.floor(dec / 2);
}
bin.push(dec);
while(!stack.isEmpty(bin)){
bin2 += (bin.pop());
}
alert(bin2);
alert(bin);
}
decimal2bin(13);
学习成果:
1. 类的创建
class 类名{
constructor(){
//类中的数据
}
//不加逗号
//定义类中方法
方法名(形参){
return ...
}
}
2.类的使用
cosnt 创建的子类 = new 类名();
3. 将数组以字符串(无逗号间隔)显示:
var str = '';
str += string.pop();
4. Math.floor(数字); 向下取整
5. 求余%
补充
补充:栈(Stack)是一种**后进先出(LIFO)**的线性表,仅允许在栈顶进行入栈(push)与出栈(pop),时间复杂度均为 O(1)。栈的典型应用:
- 函数调用栈:保存执行上下文;
- 浏览器前进/后退、撤销/重做;
- 括号匹配、表达式求值、十进制转二进制等;
- DFS 递归实现、单调栈(下一个更大元素)。
十进制转二进制的思路:除 2 取余,把余数依次压栈,再依次出栈即得二进制位(低位先入栈,高位先出栈)。
function decimalToBinary(dec) { const stack = []; while (dec >= 1) { stack.push(dec % 2); dec = Math.floor(dec / 2); } let bin = ''; while (stack.length) bin += stack.pop(); return bin || '0'; } console.log(decimalToBinary(13)); // "1101"
来源整理自:我的有道云笔记



