数据结构与算法 --- js描述队列
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描述队列的更多相关文章
- 数据结构与算法Java描述 队列
package com.cjm.queue; /** * 数据结构与算法Java实现 队列 * * @author 小明 * */ public class Myqueue { private Nod ...
- 数据结构与算法 --- js描述栈
js描述栈及栈的使用 栈的特性就是只能通过一端访问,这一段就是叫做栈顶.咖啡馆内的一摞盘子就是最形象的栈的例子: 根据栈的特性,就可以定义栈的一些特殊属性和方法;用js的描述栈的时候底层数据结构用的是 ...
- 数据结构与算法 --- js描述集合
js描述集合 function Set(){ this.datasource=[]; this.add=add; this.remove=remove; //this.size=size; //thi ...
- 数据结构与算法JavaScript描述——队列
注:澄清一个bug: /** * 删除队首的元素: */ function dequeue(){ return this.dataStore.shift(); } 应该有return: 队列是一种 ...
- 《数据结构与算法JavaScript描述》
<数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...
- 数据结构与算法JS实现
行解算法题,没错,就是这么方便. 当然也可以使用 Node.js 环境来执行,具体参考Node.js官方文档即可. 二 对象和面向对象编程 js中5种数据类型,并没有定义更多的数据类型,但是运用j ...
- 翻阅《数据结构与算法javascript描述》--数组篇
导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...
- 数据结构与算法javascript描述
<数据结构与算法javascript描述>--数组篇 导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScri ...
- 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法
前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了.做了一些NOI的题目,这也是一个长期的目标中的一环.做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习.学习的第一本是 ...
随机推荐
- 如何使用IoTSharp对接ModBus?
提到对接ModBus 那么或许大家最熟悉的可能是 HslCommunication 和SharpSCADA 了,是GitHub 上关注最多的此类开源项目, 因此IoTSharp将通过HSL组件进行数 ...
- VRChat之blender教程
推荐先看:VRChat模型制作及上传总篇(包含总流程和所需插件):https://www.cnblogs.com/raitorei/p/12015876.html 0.设置中文,安装cat插件 注意 ...
- springboot多租户设计
1. 概述 根据不同用户的请求,选择不同的数据源,不同的数据源可以是Oracle.MySQL或者其它.用到的技术栈,没有什么复杂的技术,可以看到,依赖也就加了几个而已,如下: 2. 先睹为快 如下图, ...
- 使用springboot + druid + mybatisplus完成多数据源配置
一. 简介 1. 版本 springboot版本为2.0.3.RELEASE,mybatisplus版本为2.1.9, druid版本为1.1.9,swagger版本为2.7.0 2. 项目地址 ...
- python获取网页信息的三种方法
import urllib.request import http.cookiejar url = 'http://www.baidu.com/' # 方法一 print('方法一') req_one ...
- 20191031-6beta week 1/2 Scrum立会报告+燃尽图 04
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9914 git地址:https://e.coding.net/Eustia/ ...
- 根据设备id自动打开本设备的串口
对于串口设备经常遇到重新拔插串口设备时候,程序又需要重新选择串口打开.对此很少麻烦的要死. 现在我们可以根据该设备的id去遍历串口设备,一旦符合就打开此串口即可. public void init() ...
- 1027 打印沙漏 (20 分)C语言
题目描述 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状" ...
- 我与Git的那些破事--代码管理实践
1. Git是什么? 作为一名程序猿,我相信大家都或多或少接触过git--分布式版本控制软件. 有人说,它是目前世界上最先进的分布式版本控制系统,我想说,是否最先进不知道,但确实好用,实用. 作为一款 ...
- mysql oracle sql获取树 父级 子级 及自己
select * from ( select t.*,d.TABLE_NAME,d.QUERY_SQL,d.data_control_col,d.id table_id,d.where_sql fro ...