数据结构day1-1 数组 与 栈 受限的线性结构
一、 数组
JS的数组就是API的调用
因此 老师没讲。。
二、栈结构 (基于数组来实现的)
我们知道数组是一种线性结构 并且可以在数组任意位置 插入和删除数据
但是有时候我们为了实现某些功能必须对这种任意性 加以限制.
而栈和队列就是比较常见的 受限的线性结构 我们先学习栈结构
栈结构示意图
添加(进栈,入栈,压栈)与删除(出栈,退栈)元素 只能在一端进行操作
递归自己调用自己 栈溢出 (自己考虑。。)
三、栈结构的实现 栈的封装
function Stack() { this.items = [] // 栈的相关操作 // 1、将元素压入栈 Stack.prototype.push = function(element) { this.items.push(element) } // 2、从栈中取出元素 Stack.prototype.pop = function() { return this.items.pop() } // 3、查看一下栈顶元素 Stack.prototype.peek = function() { return this.items[this.items.length - 1] } // 4、判断栈是否为空 Stack.prototype.isEmpty = function() { return this.items.length == 0 } // 5、获取栈中元素个数 Stack.prototype.size = function() { return this.items.length } // 6、toString方法 Stack.prototype.toString = function() { var resultString = '' for (var i=0; i< this.items.length; i++) { resultString += this.items[i] + ' ' } return resultString } } var s = new Stack(); s.push(20) s.push(10) s.push(100) s.push(40) alert(s) s.pop() s.pop() alert(s) alert(s.peek()) alert(s.isEmpty()) alert(s.size())
四: 100 十进制转二进制 计算步骤
// 函数: 将十进制转成二进制 function dec2bin(decNumber) { // 1、 var stack = new Stack() while(decNumber > 0) { //1 、获取余数 压入到栈 stack.push(decNumber % 2) //2 、 获取整除后的结果 作为下一次运行的数字 decNumber = Math.floor(decNumber / 2) } // 3、冲栈中取出0 1 var binaryString = '' while(!stack.isEmpty()) { binaryString += stack.pop() } return binaryString; } alert(dec2bin(100))