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 }());

 

posted @ 2017-06-08 16:33  鱼肥肥与肥肥鱼  阅读(240)  评论(0编辑  收藏  举报