记录自己的学习
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
function Stack(){ this.data = []; this.push = push; //添一个或多个元素到栈顶 this.pop = pop; 移除栈顶的元素,同时返回被移除的元素 this.peek = peek; 返回被移除的元素 this.isEmpty = isEmpty; 判断栈是否为空,空返回true,否则返回false this.clear =clear; 移除栈里的所有元素 this.size = size; 返回栈内元素的个数 }; push(ele){ this.data.push(ele); }; pop(){ return this.data.pop(); 利用数组的pop()方法来达到移除栈顶的元素,同时返回被移除的元素 peek(){ this.data[this.data.length-1] }; isEmpty(){ this.data.length == 0; }; size(){ .data.length; }; clear(){ []; }; var sta = new Stack(); sta.push('lily'); sta.push('Tom') console.log(sta.data) ['lily','Tom'] var peeka = sta.peek(); console.log(peeka) Tom var popa = sta.pop(); console.log(popa) Tom console.log(sta.data) lily
运用上面实现的stack,实现进制转化
进制转换 10进制转化2进制,8进制,16进制 baseConverter(number,base){ var remStack = Stack(),rem,baseString = '',digits = '0123456789ABCDEF'; while(number > 0){ rem = number % base; remStack.push(rem); number = parseInt(number / base) } while(!remStack.isEmpty()){ baseString += digits[remStack.pop()]; } return baseString; } var a = baseConverter(15,16) console.log(a) F