分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

原生JS实现队结构及利用队列模拟‘击鼓传花’游戏

发布时间:2023-09-06 02:09责任编辑:熊小新关键词:暂无标签

1. 前言

队列,是一种遵从先进先出(FIFO,First-In-First-Out)原则的有序集合。队列在尾部添加新元素,并从顶部移除元素,最新添加的元素必须排在队列的末尾。

2.功能说明

  1. enqueue(value):进队,添加一个新元素到队列末尾
  2. dequeue():出队,移除队列中的第一个元素,同时返回该元素
  3. front():获取队列中的第一个元素
  4. isEmpty():判断队列是否为空。是返回true,否返回fallse
  5. clear():清空队列里的元素
  6. size():获取队列里元素的个数

3. 代码实现

首先,先创建一个类表示队列,并且初始化一个空数组,用来保存队列里的元素

class Queue { ???constructor() { ?????this.items = []; ???}; ?} 

接着,在这个队列类中实现所需要的功能:

class Queue { ???constructor() { ?????this.items = []; ???} ???//进队,从队的尾部进入 ???enqueue(value) { ?????this.items.push(value); ???} ???//出队,从队的头部出 ???dequeue() { ?????return this.items.shift(); ???} ???//获取队中的第一个元素 ???front() { ?????return this.items[0]; ???} ???//判断队是否为空 ???isEmpty() { ?????return this.items.length === 0; ???} ???//获取队中元素的个数 ???size() { ?????return this.items.length; ???} ?}

4. 测试

在这里,我们可以利用队列模拟‘击鼓传花’的游戏:

/**名称:击鼓传花*参数:nameArr,为一个数组,包含了参与该游戏的所有人员名字;* ????num,击鼓的次数*返回:最终游戏胜利者的名字*/ ?function JGCH(nameArr, num) { ???var queue = new Queue(); ?//实例化一个队列 ???for (var i = 0; i < nameArr.length; i++) { ?????queue.enqueue(nameArr[i]); //将传入的数组中的人员名字加入到队列中 ???} ???var taotai = ‘‘; ???while (queue.size() > 1) { ?????for (var i = 0; i < num; i++) { ?????//每击一次鼓,将队列开头的一项移至队尾 ???????queue.enqueue(queue.dequeue()); ?????} ?????//击鼓停止,拿着花的那个人即被淘汰,移出队列 ?????taotai = queue.dequeue(); ?????console.log(taotai + ‘被淘汰!!!‘); ???} ???//最后队列里剩下的那个人即为最终胜利者 ???return queue.dequeue(); ?}var nameArr = [‘郭靖‘, ‘张无忌‘, ‘乔峰‘, ‘虚竹‘, ‘段誉‘];console.log(‘最终胜利者是:‘ + JGCH(nameArr, 10));

游戏结果:

原生JS实现队结构及利用队列模拟‘击鼓传花’游戏

原文地址:https://www.cnblogs.com/wangjiachen666/p/9462914.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved