马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2018-4-5 16:20 编辑
我们已经学了栈,那么毫无疑问就轮到“队列”了。
栈是后进先出,队列则是先进先出。
基础介绍请看:0 1 2 4 ★ Js中‘仿 ' 【栈stack】&【队列queue】| 【鱼C独家】。
队列(Queue)是遵循FIFO(First In First Out)原则的有序的项。
队列在尾部添加新元素,并从顶部移除元素,最后添加的元素必须排在队列的末尾。
创建队列
我们来用类创建一个队列,先从最基本的声明开始:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="小甲鱼,Web开发,HTML5,CSS3,Web编程教学">
<meta name="description" content="《零基础入门学习Web开发》案例演示">
<meta name="author" content="鱼C工作室">
<title>鱼C-数据结构与算法(JavaScript)</title>
</head>
<body>
<script>
// 声明一个队列
function Queue(){
//定义属性和方法
}
</script>
</body>
</html>
首先需要一个用于存储队列中元素的数据结构,可以使用数组。
在Queue()方法中创建一个数组:
接下来需要声明一些队列的方法:
enqueue(element(s)):像队列尾部添加一个(多个)新的项。
dequeue():移除队列的第一个(最前面的顶部)项,并返回被移除的元素。
front():返回队列中的第一个元素(最先被添加,最先被移除)。
(队列不会有任何改变,不删除,只返回元素的信息)
isEmpty():如果队列中不包含任何元素,返回true,否则false。
size():返回队列包含的元素个数。
enqueue(element(s))像队列添加元素
这个方法负责像队列中添加新的项,记住:
代码:// 添加新的项
this.enqueue = function(element){
items.push(element);
};
由于JS的数据结构特点,我们往队列的末尾添加值。
此时就可以用JS的push方法。
预知详情请看:0 0 4 6 ★ 数组对象之push()方法
dequeue()从队列中移除元素
这个方法负责移除项,由于队列遵循先进先出原则,最先添加的项最先被移除。
此时可以用JS的Array类中的shift方法。
预知详情请看:0 0 5 2 ★ 数组对象之shift()方法
示例:// 移除元素
this.dequeue = function(){
return items.shift();
};
front()查看队列的头元素
如果突然想知道队列最前面的项是什么,就可以用front()。
示例:// 查看项
this.front = function(){
return items[0];
};
默认返回第0项,可以手动指定查看队列中的任何一项,然后修改item[n]中的n值即可。
isEmpty()检查队列是否为空
如果队列为空,会返回true,否则返回false。
示例:// 检查是否为空
this.isEmpty = function(){
return items.length == 0;
};
size(),返回队列包含的元素个数。
本方法可以返回队列的长度,如果长度为0,也可以用来判断队列是否为空。
示例:// 检查队列长度
this.size = function(){
return items.length;
};
打印输出队列元素
运用本方法,会在控制台输出队列中的指定元素。
示例:// 输出元素
this.print = function(){
console.log(items.toString());
};
最终的Queue
源码:
如果有收获,别忘了评分 :
这位鱼油,如果喜欢本系列学习笔记,请订阅 专辑☞( 传送门)( 不喜欢更要订阅 )
|