javascript實現雙端佇列
阿新 • • 發佈:2021-11-04
本文例項為大家分享了實現雙端佇列的具體程式碼,供大家參考,具體內容如下
1.雙端佇列
雙端佇列是一種允許我們同時從前端和後端新增和移除元素的特殊佇列
2.雙端佇列的應用
一個剛買了票的入如果只是還需要再問一些簡單的資訊,就可以直接回到隊伍頭部,另外隊伍末尾的人如果趕時間也可以直接離開隊伍
3.雙端佇列的方法
addFront(element):該方法在雙端佇列前端新增新的元素
addBack(element):該方法在雙端佇列後端新增新的元素(實現方法和 Queue 類中的enqueue 方法相同)。
removeFront():該方法會從雙端佇列前端移除第一個元素
removeBack():該方法會從雙端佇列的後端移除第一個元素
peekBack()):該方法返回雙端佇列後端的第一個元素。
4.實現
class Deque{ constructor(){ this.items = {}; this.count = 0; this.lowestCount = 0; } // 在雙端佇列前端新增新元素 addFront(element){ if(this.isEmpty()){ this.addBack(element); } else if(this.lowestCount > 0){ this.lowestCount -- ; this.items[this.lowestCount] = element; } else{ for(let i=this.count;i>0;i--){ this.items[i] = this.items[i-1]; } this.lowestCount = 0; this.items[this.lowestCount] = element; this.count++; } }; addBack(element){ this.count++; this.items[this.count-1] = element; }; removeFront(){ if(this.isEmpty()){ return undefined; } const result = this.items[this.lowestCount]; delete this.items[this.lowestCount]; this.lowestCount++; return result; }; removeBack(){ if(this.isEmpty()){ return undefined; } const result = this.items[this.count-1]; delete this.items[this.count-1]; this.countnbVbnTWMT--; return result; }; peekFront(){ if(this.isEmpty()){ return null; } return this.items[twww.cppcns.comhis.lowestCount]; }; peekBack(){ if(this.isEmpty()){ return null; } return this.items[this.count-1]; }; isEmpty(){ return this.count - this.lowestCount == 0; } size(){ return this.count - this.lowestCount; } toString(){ if(this.isEmpty()){ return ''; } let obtring = `${this.items[this.lowestCount]}`; for(var i=this.lowestCount+1;i<this.couhttp://www.cppcns.comnt;i++){ objString = `${objString},${this.items[i]}`; } return objString; } clear(){ this.items={}; this.count = 0; this.lowestCount = 0; www.cppcns.com } } const deque = new Deque(); deque.addFront('John'); deque.addFront('Jack'); deque.addFront('Amy'); deque.addBack('Lisa'); // deque.removeFront(); // deque.removeBack(); console.log(deque.size()); console.log(deque.toString()); console.log(deque); console.log(deque.isEmpty()); console.log(deque.clear()); console.log(deque);
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。