目的:ES6标准下的JS数据结构的一些实现代码。(作为记录和启发)
内容:队列和双端队列。(未完成,待继续)
所有源码在我的Github上(如果觉得不错记得给星鼓励我哦):ES6的JavaScript数据结构实现之队列
一、基础数据结构
1、队列(FIFO)
1 class Queue{ 2 constructor(){ 3 this.count = 0; 4 this.lowestCount = 0; 5 this.items ={}; 6 } 7 8 9 enqueue(element) { 10 this.items[this.count] = element; 11 this.count++; 12 } 13 14 dequeue() { 15 if (this.isEmpty()) { 16 return undefined; 17 } 18 const result = this.items[this.lowestCount]; 19 delete this.items[this.lowestCount]; 20 this.lowestCount++; 21 return result; 22 } 23 24 peek() { 25 if (this.isEmpty()){ 26 return undefined; 27 } 28 return this.items[this.lowestCount]; 29 } 30 31 isEmpty() { 32 return this.size() === 0; 33 } 34 size() { 35 return this.count - this.lowestCount; 36 } 37 clear(){ 38 this.items = {}; 39 this.count = 0; 40 this.lowestCount = 0; 41 } 42 toString(){ 43 if (this.isEmpty()){ 44 return ''; 45 } 46 let objString = `${this.items[this.lowestCount]}` 47 for (let i= this.lowestCount + 1; i < this.count;i++){ 48 objString = `${objString},${this.items[i]}`; 49 } 50 return objString; 51 } 52 } 53 54 const queue = new Queue(); 55 console.log(queue.isEmpty()); 56 queue.enqueue('a'); 57 queue.enqueue('b'); 58 queue.enqueue('c'); 59 console.log(queue); 60 console.log(queue.size()); 61 console.log(queue.toString()); 62 queue.dequeue(); 63 console.log(queue); 64 console.log(queue.peek()); 65 queue.clear(); 66 console.log(queue);