队列的定义:队列简称队。是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队;删除元素称为出队或离队。其操作特性为先进先出(First In First Out,FIFO),并且只允许在队尾进,队头出。

JavaScript对队列的封装

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>封装队列</title>
</head>
<body><script>// 封装队列类function Queue() {// 属性this.items = []// 方法// 将元素加入队列中Queue.prototype.enqueue = function(element) {this.items.push(element)}// 从队列中删除元素Queue.prototype.dequeue = function() {return this.items.shift()}// 查看前端的元素Queue.prototype.front = function() {return this.items[0]}// 查看队列是否为空Queue.prototype.isEmpty = function() {return this.items.length == 0}// 查看队列中元素的个数Queue.prototype.size = function() {return this.items.length}// toString方法Queue.prototype.toString = function() {var resultString = ''for(var i = 0 ; i < this.items.length ; i++) {resultString += this.items[i]+' '}return resultString}}// 使用队列var queue = new Queue()// 将元素加入到队列中queue.enqueue("abc")queue.enqueue("def")queue.enqueue("lxh")alert(queue)// 从队列中删除元素queue.dequeue()alert(queue)// front方法alert(queue.front())// 其他方法alert(queue.isEmpty())alert(queue.size())</script>
</body>
</html>

队列的应用案例-->前端面试题击鼓传花

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>击鼓传花案例</title>
</head>
<body><script>function Queue() {this.items = []Queue.prototype.enqueue = function(element) {this.items.push(element)}Queue.prototype.dequeue = function() {return this.items.shift()}Queue.prototype.front = function() {return this.items[0]}Queue.prototype.isEmpty = function() {return this.items.length == 0}Queue.prototype.size = function() {return this.items.length}Queue.prototype.toString = function() {var resultString = ''for(var i = 0 ; i < this.items.length ; i++) {resultString += this.items[i]+' '}return resultString}}// 封装函数function passGame(namelist,num) {// 创建队列结构var queue = new Queue()// 将所有的人加入到队列中for(var i = 0 ; i < namelist.length ; i++) {queue.enqueue(namelist[i])}// 开始数数// 不是num数字的时候,重新加入到队列的末尾// 是num数字的时候,将其从队列中删除while(queue.size() > 1) {for(var i = 0 ; i < num-1 ; i++) {// num之前的人重新放入到队列的末尾queue.enqueue(queue.dequeue())}// num对应的这个人直接从队列中删除掉queue.dequeue()}// 获取队列中剩下的那个人alert(queue.size())var endName = queue.front()alert("最终剩下的人:"+endName)return namelist.indexOf(endName)}// 测试击鼓传花的方法names = ['lily','lucy','lingxiaohu','hyw','xiaonaihu']alert(passGame(names,3))</script>
</body>
</html>

JavaScript:队列的封装及面试题击鼓传花队列方法实现案例相关推荐

  1. 58同城19机试题—击鼓传花

    #题目描述 击鼓传花游戏:总共m个人围城一圈,编号从1开始.从第一个人开始传递一朵花,当传到第n次时,持花者出局,下一个人重新计数传递,重复直到所有人都出局.请给出按照原始编号的出剧顺序.例:有7个人 ...

  2. JS使用普通队列实现击鼓传花游戏

    最近复习到了数据结构中的普通队列部分,来实现一个击鼓传花游戏的应用. 循环队列的一个例子就是击鼓传花(hot potato),在这个游戏中,孩子们围成一个圆圈,把花尽快地传递给旁边的人.某一时刻传话停 ...

  3. JavaScript通过队列和双端队列实现击鼓传花游戏

    游戏规则: 民间击鼓传花游戏,也称传彩球.数人.十数人或数十人围成一个圆圈,把花尽快地传递给旁边的人.某一时刻传花停止,这个时候花在谁手里,谁就退圈.结束游戏.重复该过程,直到只剩一个人(胜利者). ...

  4. JavaScript队列结构——击鼓传花游戏

    JavaScript队列结构--击鼓传花游戏 //队列类 function Queue(){this.items = []//将元素添加到队列中Queue.prototype.enqueue = fu ...

  5. 数据结构之栈和队列以及如何封装栈和队列,栈和队列的实例(进制转换和击鼓传花)

    什么是数据结构? 不同的书对数据结构有不同的定义,例如: "数据结构是数据对象,以及存在于该对象的实例和 组成实例的数据元素之间的各种联系.这些联系可以通过定义相关的函数来给出." ...

  6. JavaScript 击鼓传花的游戏 使用数据结构---队列来实现击鼓传花

    击鼓传花游戏 原游戏规则: 班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花. 这个时候某个人(比如班长),在击鼓,鼓声停下的一刻,花落在谁手里,谁就出来表演节目 一般在编程 ...

  7. javascript——队列(击鼓传花)

    队列(FIFO)规则:先进先出 击鼓传花游戏规则: 所有的人围成一个圈,规定一个数字,从第一个人的名字开始数,数到谁就淘汰谁,最后剩下的人获胜. 代码: <!DOCTYPE html> & ...

  8. 击鼓传花java_关于javascript:JavaScript-使用数据结构队列来实现击鼓传花

    击鼓传花游戏 原游戏规则: 班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花. 这个时候某个人(比方班长),在击鼓,鼓声停下的一刻,花落在谁手里,谁就进去表演节目 在编程中的 ...

  9. 数据结构--队列--js击鼓传花算法实现

    击鼓传花游戏 原游戏规则: 班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花. 这个时候某个人(比如班长),在击鼓,鼓声停下的一刻,花落在谁手里,谁就出来表演节目 一般在编程 ...

最新文章

  1. OpenCV代码提取:transpose函数的实现
  2. mysql batch insert 遇到错误跳过_mysql 主从复制错误如何跳过
  3. table中tr使用toggle不好,选择换一张方式
  4. 如何编译java,java如何编译运行?
  5. Angular bootstrap的一个例子
  6. python小甲鱼爬虫妹子_【Python学习日记】B站小甲鱼:爬虫
  7. 水平集嵌入函数的曲率
  8. oracle ora 16014,ORA-16014 ORA-00312错误解决
  9. 数据分析师看了这个故事,你还有什么理由不努力?
  10. 软件设计师中级考试经验总结
  11. 1、什么是公众号appid?
  12. 下一代Web服务的基础框架——F2F俱乐部SOA系列活动
  13. 如何将word文档生成二维码
  14. 解决jmeter5.4.3在高分辨率下的显示问题
  15. 类似360浏览器 拖拽插件_又一个好用的能上谷歌学术的插件,收藏吧。!
  16. Java网上投票系统毕业设计
  17. 现如今99%的区块链都是空气项目
  18. 机器学习之线性回归模型
  19. 【spring_Cloud】java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud
  20. ROS msg 文件修改 报错

热门文章

  1. Android 笑话+html 实例开发(详解)
  2. java se  通用能力-数量关系专项练习(选择题)
  3. 计算机组装win7实训报告,计算机实训报告范文精选5篇
  4. ubuntu22.04配置sources.list
  5. 基于MQTT协议的远程监控-控制系统——ESP/STM32 MCUs 实现
  6. 木兰辞 [南北朝] 南北无名
  7. 电子琴仿真c语言程序,设计电子琴的C语言程序(基于单片机)
  8. mysql 归档日志_归档日志管理
  9. tcping扫描所有端口_批量Tcping ip 加 端口
  10. 成都健身房微信小程序开发