• JavaScript数据结构与算法(二) 队列的实现


    TypeScript方式源码

     1 class Queue {
     2     items = [];
     3     public enqueue(element) {
     4         this.items.push(element);
     5     }
     6     public dequeue() {
     7         return this.items.shift();
     8     }
     9     public front() {
    10         return this.items[0];
    11     }
    12     public isEmpty() {
    13         return this.items.length == 0;
    14     }
    15     public clear() {
    16         this.items = [];
    17     }
    18     public size() {
    19         return this.items.length;
    20     }
    21     public print() {
    22         console.log(this.items.toString());
    23     }
    24 }
    25 
    26 // Queue类和Stack类非常类似。唯一区别是dequeue方法和front方法,由于先进先出和后进先出原则的不同所造成
    27 // 使用Queue类
    28 let queue = new Queue();
    29 console.log(queue.isEmpty());           // 输出true
    30 
    31 // 接下来,添加一些元素
    32 queue.enqueue('John');
    33 queue.enqueue('Jack');
    34 
    35 // 添加另一个元素
    36 queue.enqueue('Camila');
    37 
    38 // 再执行一些其他的命令
    39 queue.print();
    40 console.log(queue.size());              // => 3
    41 console.log(queue.isEmpty());           // => false
    42 queue.print();
    43 
    44 // 下图展示目前为止所有入列操作,以及队列当前的状态
    
    46 // 然后,出列两个元素(执行两次dequeue方法)。下图展示dequeue方法执行过程
    47 queue.dequeue();
    48 queue.dequeue();

    JavaScript方式源码

     1 var Queue = (function () {
     2     function Queue() {
     3         this.items = [];
     4     }
     5     Queue.prototype.enqueue = function (element) {
     6         this.items.push(element);
     7     };
     8     Queue.prototype.dequeue = function () {
     9         return this.items.shift();
    10     };
    11     Queue.prototype.front = function () {
    12         return this.items[0];
    13     };
    14     Queue.prototype.isEmpty = function () {
    15         return this.items.length == 0;
    16     };
    17     Queue.prototype.clear = function () {
    18         this.items = [];
    19     };
    20     Queue.prototype.size = function () {
    21         return this.items.length;
    22     };
    23     Queue.prototype.print = function () {
    24         console.log(this.items.toString());
    25     };
    26     return Queue;
    27 }());
  • 相关阅读:
    Vuex ~ 初识
    Vue 2.0 生命周期-钩子函数理解
    vue利用watch侦听对象具体的属性 ~ 巧用计算属性computed做中间层
    Elements in iteration expect to have 'v-bind:key' directives.' 提示错误如何解决?
    微信小程序-如何自定义导航栏(navigationStyle)?
    微信小程序~触摸相关事件(拖拽操作、手势识别、多点触控)
    [Java] Collections
    [Java] Map / HashMap
    [Data Structure] 红黑树( Red-Black Tree )
    [Data Structure] 二叉搜索树(Binary Search Tree)
  • 原文地址:https://www.cnblogs.com/menu/p/6963568.html
Copyright © 2020-2023  润新知