栈 1、基本含义 栈遵循后进先出的规则(LCFO),元素从栈顶进入,先进入的元素会慢慢向栈底的方向移动,后进的元素会从栈顶出去。简单的示意图: 入栈顺序是从上到下,出栈刚好相反。
在JavaScript中,入栈可以看成数组尾部添加即push;出栈可以看成pop;
2、举个例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 class Stack { constructor ( ) { this .arr = [] } add (ele ) { this .arr .push (ele) } del ( ) { return this .arr .pop () } clear ( ) { return this .arr .length = 0 } isemply ( ) { return this .arr .length === 0 } } let stack = new Stack ()stack.add (1 ) stack.add (2 ) stack.add (3 ) stack.add (4 ) stack.add (5 ) console .log (stack);stack.del () console .log (stack.isemply ());stack.clear () console .log (stack);
这里就简单的实现了一个栈,以及栈的进出。
清空数组扩展:1)arr.length= 0 ; 2)arr = [] ; 3)arr.splice (0, arr.length)
3、在2的基础上实现十进制转二进制算法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 const binary = (number ) => { let stack = new Stack () let top = '' let remain = 0 if (number > 0 ) { remain = number % 2 stack.add (remain) number = Math .floor (number / 2 ) } while (!stack.isemply ()) { top += stack.del () } return top } console .log (binary (113 ));