深入理解栈和队列

113 阅读1分钟

一.什么是栈和队列

栈:是一种后进先出的数据结构
    也就是说最新添加的项最早被移出;LIFO(后进先出)
队列:数据结构访问规则是FIFO(先进先出)
    队列在列表的末端添加项,从列表的前端移出项  

二.push、pop、unshift、shift方法

数组:集成栈跟队列的两种规则 
var arr = [1,2,3,4,5,6] 
栈的形式访问:(结尾出入栈)
    console.log(arr.push(7))   //7
    console.log(arr) //[1,2,3,4,5,6,7] 
    console.log(arr.pop)  //7
    console.log(arr) //[1,2,3,4,5,6]
队列的形式访问:(开头出入栈)
    console.log(arr.unshift(7))  //7
    console.log(arr)  //[7,1,2,3,4,5,6]
    console.log(arr.shift())  //7
    console.log(arr)  //[1,2,3,4,5,6]
//结尾出入栈不影响原有的数据位置索引  --效率高
//开头出入栈影响原有的数据位置索引    --效率低

三.sort如何排序

var arr = [1,3,4,6,5,2] 
console.log(arr.sort())   //[1,2,3,4,5,6]
var arr = [3,25,15,18,9,22]
console.log(arr.sort())   //[15,18,22,25,3,9]
sort的排序规则:
    1.默认升序 
    2.将排序的元素转为字符串['3','25'...]
    3.找对应字符串的Unicode码表
        只定义了[0-9],先从第一位开始排。再排第二位
 解决:定义一个比较器函数
     sort(function(x,y){
         return x-y //小于0 x移到y前面,大于0 x移到y后面 等于0不变
     })