简单方法快速记忆数组栈和队列函数
在js中,对数组的操作是比较常见的,有时候,我们需要模拟栈和队列的特性才能实现需求,今天来给大家用通俗易懂、简洁明了的几行文字,来告诉大家栈和队列的几个函数,如何快速记住。
首先,概念还是要知道的:
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
js中没有专门栈和队列类型,其实都是用数组模拟的
栈:一端封闭,只能从另一端进出的数组
FILO(first in last out) 先进的后出
栈进出分为两种:
结尾出入栈:
入: arr.push(值) 将值压入数组末尾(push之前栈里是没有 元素的)
出: var last=arr.pop() 【弹出来的数有用,所以用last接住】
从数组末尾弹出1个元素 (新值永远在末尾)
好处: 新出入栈元素,不影响其他元素的位置
开头出入栈: 入: arr.unshift(值) 将值插入到开头【API】
出: var first=arr.shift();
从数组开头弹出第1个元素(新值永远在开头)
缺点: 每出入栈一次元素,其余所有元素的位置都要改变(效率低一些)
何时使用栈: 保证始终使用数组中最新的元素时
eg:ECS 执行环境栈
浏览器永远访问最新的网址,外面是历史记录栈
队列: 只能从一端进入,从另一端出
FIFO(first in first out) 先进先出
从结尾入队列: arr.push(值)
从开头出队列: var first=arr.shift()
何时使用队列: 希望按照先来后到的顺序使用数据时
函数速记:
pop()与shift()都是删除
pop()删除数组中的最后一个元素,并返回该元素
shift()删除数组中的第一个元素,并返回该元素
push()与unshift()都是插入
push()添加一个或多个新元素到数组的结尾,返回数组长度
unshift()添加一个或多个新元素到数组的开头,返回数组长度
(即 :
单词短的为删除,
单词长的为插入,
删除返回该元素,
插入返回该长度)
shift与unshift都是开头,pop和push都是结尾
(带shift的为开头,带p的为结尾)
相关文章
- 队列的两种实现方法
- arraydeque方法_双端队列如何理解
- HTTPS是什么意思?HTTP与HTTPS的区别,以及HTTPS的配置方法
- redis中队列消息实现应用解耦的方法
- phpredis提高消息队列的实时性方法(推荐)
- Linux下查看当前所处路径的方法(linux显示路径)
- Linux 下关闭线程的简便方法(linux关闭线程命令)
- 探索Linux下查询域名的方法(linux查询域名)
- 解决MSSQL忘记密码的方法(mssql忘记密码)
- Redis:高效实用的消息队列实现方法(redis如何做消息队列)
- 让Redis更加整洁的清理方法(清理redis怎么清理)
- MySQL实现三表关联更新的实现方法(mysql 三表关联更新)
- Oracle中正确查询字段名的方法(oracle中查询字段名)
- Redis队列清空任务的简易方法(redis队列清空)
- 解决Redis队列挂掉的方法探索(redis队列挂掉怎么办)
- 如何识别上传前检测的图像是有效的方法
- 十招提高Linux系统安全性的设置方法
- 加密你的Access数据库asp打开方法
- TextBox获取输入焦点时自动全选的实现方法
- 解析如何用两个栈来实现队列的方法
- MSSQL中删除用户时数据库主体在该数据库存中拥有架构无法删除的解决方法
- jquery队列queue与原生模仿其实现方法分享
- MSSQL自动重建出现碎片的索引的方法分享
- python实现堆栈与队列的方法