js描述队列

  • 队列的特性是只能在队尾插入元素,在队首删除元素,先进先出;
  • 队列被用在很多地方,比如提交操作系统执行的一系列进程,打印任务池,模拟现实中的排队;
//队列类
function Queue (){
this.dataSource=[];
this.enqueue=enqueue;
this.dequeue=dequeue;
this.front=front;
this.back=back;
this.toString=toString;
this.empty=empty;
}
//向对尾添加元素
function enqueue(element){
this.dataSource.push(element);
}
//删除队首元素
function dequeue(){
return this.dataSource.shift();
}
//返回队首元素
function front (){
return this.dataSource[0];
}
//返回队尾元素
function back (){
return this.dataSource[this.dataSource.length-1];
}
//将所有元素转化为字符串
function toString(){
var str='';
for(var i=0;i<this.dataSource.length;i++){
str+=this.dataSource+"\n";
}
return str;
}
//判断队列是否为空
function empty(){
if(this.dataSource.length==0){
return true;
}else{
return false;
}
}

队列的实际运用

  • 解决男女配对跳舞问题
var people=[
{
name:'frank',
sex:'man',
},{
name:'rose',
sex:'woman',
},{
name:'even',
sex:'man',
},{
name:'xiaowang',
sex:'man',
},{
name:'xiaoliu',
sex:'man',
},{
name:'xiaohua',
sex:'woman',
},{
name:'xiaoqiang',
sex:'man',
},{
name:'xiaoli',
sex:'woman',
},{
name:'xiaomei',
sex:'woman',
}
];
function Dencer(name,sex){
this.name=name;
this.sex=sex;
}
function getManDencer(){
var man=new Queue();
var woman=new Queue();
for(var i=0;i<people.length;i++){
if(people[i].sex=='man'){
var manDencer=new Dencer(people[i].name,people[i].sex);
man.enqueue(manDencer);
}else{
var womanDencer=new Dencer(people[i].name,people[i].sex);
woman.enqueue(womanDencer);
}
}
dancer(man,woman);
}
function dancer(man,woman){
while (!man.empty() && !woman.empty()){
manPeople=man.dequeue();
womanPeople=woman.dequeue();
console.log(manPeople.name+">>>>>>>>>>>>>>"+womanPeople.name);
};
}
getManDencer()

github:https://github.com/Frankltf/js-queue/tree/features-one

数据结构与算法 --- js描述队列的更多相关文章

  1. 数据结构与算法Java描述 队列

    package com.cjm.queue; /** * 数据结构与算法Java实现 队列 * * @author 小明 * */ public class Myqueue { private Nod ...

  2. 数据结构与算法 --- js描述栈

    js描述栈及栈的使用 栈的特性就是只能通过一端访问,这一段就是叫做栈顶.咖啡馆内的一摞盘子就是最形象的栈的例子: 根据栈的特性,就可以定义栈的一些特殊属性和方法;用js的描述栈的时候底层数据结构用的是 ...

  3. 数据结构与算法 --- js描述集合

    js描述集合 function Set(){ this.datasource=[]; this.add=add; this.remove=remove; //this.size=size; //thi ...

  4. 数据结构与算法JavaScript描述——队列

    注:澄清一个bug: /** * 删除队首的元素: */ function dequeue(){ return this.dataStore.shift(); } 应该有return:   队列是一种 ...

  5. 《数据结构与算法JavaScript描述》

    <数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...

  6. 数据结构与算法JS实现

      行解算法题,没错,就是这么方便. 当然也可以使用 Node.js 环境来执行,具体参考Node.js官方文档即可. 二 对象和面向对象编程 js中5种数据类型,并没有定义更多的数据类型,但是运用j ...

  7. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

  8. 数据结构与算法javascript描述

    <数据结构与算法javascript描述>--数组篇 导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScri ...

  9. 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法

    前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了.做了一些NOI的题目,这也是一个长期的目标中的一环.做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习.学习的第一本是 ...

随机推荐

  1. Cortex-A8/A76

    Cortex-A8 关于Cortex-A8的微处理架构参考<ARM_Cortex-A8微处理器的架构和实现> 其中关于NEON有两段话摘录如下: NEON媒体引擎拥有自己的10段流水线,它 ...

  2. vs指定QT的工作目录(依赖第三方动态库时,这时vs编译出来后,运行会提示缺少动态库)good

    当一个工程依赖第三方动态库时,这时vs编译出来后,运行会提示缺少动态库.解决方法: 项目->属性->调试: 工作目录:指定程序运行时的目录 环境:指定程序运行时的环境变量 我们可以在环境变 ...

  3. Django 中配置MySQL数据库

    在Django的项目中会默认使用sqlite的数据库 配置MySQL需要在setting.py 里加入以下设置: 配置数据库 DATABASES = { 'default': { 'ENGINE': ...

  4. 使用 postman 给 API 写测试

    使用 postman 给 API 写测试 Intro 上次我们简单介绍了 使用 postman 测试 API,这次主要来写一些测试用例以检查请求的响应是否符合我们的预期以及如何使用脚本测试 使用 po ...

  5. poj1737-----这题有毒

    这题有毒,不取模还会溢出,我哭了 <进阶指南>p337动态规划 公式就是个这了,代码就不贴了,反正是错的,用java算了

  6. DOCKER学习_001:Docker简介

    一 Docker简介 1.1 docker由来 Docker的英文翻译是“码头工人”,即搬运工,它搬运的东西就是我们常说的集装箱Container,Container里面装的是任意类型的App.我们的 ...

  7. Centos7源码编译安装mysql8

    前面介绍了很多关于mysql的文章,下面主要介绍一下mysql8的源码编译安装 一 基本环境 [root@CentOS-7-x86-64-Minimal-1810 ~]# cd /usr/local/ ...

  8. Mysql 表与表之间的关系

    一.前言 二.表与表之间的关系 (一) 一对多 (二) 一对一 (三) 多对多 一.前言 研究表与表之间的关系前,先要知道将所有数据存放在一张表中的弊端: 1.结构不清晰 ---> 不致命 2. ...

  9. $HDU1848\ Fibonacci\ again\ and\ again$ 博弈论

    正解:博弈论 解题报告: 传送门! 首先按照套路显然是考虑先预处理出所有数的$SG$函数值然后全局的$SG$就是$SG(n)$^$SG(m)$^$SG(p)$,这儿应该麻油问题$QwQ$? 然后就考虑 ...

  10. Linux gcc版本升级

    Linux gcc版本升级 操作环境 RHEL7,在进行内核编译时编译器版本,需要升级gcc编译器,选择gcc-8.3.0. http://ftp.gnu.org/gnu/gcc 里面提供所有的gcc ...