不二如是 发表于 2018-4-5 16:20:15

0005 ¥ 栈与队列 |【队列的创建与基础操作】

本帖最后由 不二如是 于 2018-4-5 16:20 编辑

http://xxx.fishc.com/forum/201803/20/101934b3igkgm9hgbgz0ck.gif



我们已经学了栈,那么毫无疑问就轮到“队列”了。

栈是后进先出,队列则是先进先出。

基础介绍请看: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()方法中创建一个数组:
//      创建数组
      let items = [];

接下来需要声明一些队列的方法:
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项,可以手动指定查看队列中的任何一项,然后修改item中的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

源码:
**** Hidden Message *****



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢本系列学习笔记,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_297:} )

http://xxx.fishc.com/forum/201803/21/151715umqz1qoywp11wjbq.gif

优时风 发表于 2020-6-24 09:01:32

1

6598 发表于 2020-8-15 09:40:25

啦啦啦

豪哥迷弟李先生 发表于 2022-5-7 16:24:05

1111

jack6666 发表于 2022-10-21 22:48:40

1
页: [1]
查看完整版本: 0005 ¥ 栈与队列 |【队列的创建与基础操作】