雙端佇列:
概念:雙端佇列是一種把佇列和棧結合的資料結構。可以從兩端進行增減項。
常見應用:儲存撤銷操作。
可用方法:
實現:
//使用物件模擬雙端佇列
class deque ; //佇列物件
this.lowestcount = 0; //頭部項的下標值
this.count = 0; //佇列長度計數器(注意:this.count位置上永遠是無值的。佇列不為空,它的前一位就為佇列尾部項);
}isempty()
clear() ;
this.lowestcount = 0;
this.count = 0;
}size()
addfront(element)
if (this.lowestcount === 0)
this.items[0] = element;
this.count++;
} else
}addback(element)
removefront()
let w = this.items[this.lowestcount];
delete this.items[this.lowestcount];
this.lowestcount++;
return w;
}removeback()
let w = this.items[this.count - 1];
delete this.items[this.count - 1];
this.count--;
return w;
}peekfront()
peekback()
tostring()
let str = this.items[this.lowestcount];
for (let i = this.lowestcount+1; i < this.count; i++) ,$`;
}return str;
}}
雙端佇列的使用:
//雙端佇列的使用
let mydeque = new deque();
console.log(mydeque.size()); //0
mydeque.addfront(1); //在頭部新增元素
mydeque.addfront(2);
console.log(mydeque.size()); //2
console.log(mydeque.tostring()); //2,1
console.log(mydeque.isempty()); //false
mydeque.addfront(6);
console.log(mydeque.size()); //3
console.log(mydeque.tostring()); //6,2,1
mydeque.addback(8);
mydeque.addback(3);
console.log(mydeque.size()); //5
console.log(mydeque.tostring()); //6,2,1,8,3
mydeque.removefront();
console.log(mydeque.size()); //4
console.log(mydeque.tostring()); //2,1,8,3
mydeque.removeback();
console.log(mydeque.size()); //3
console.log(mydeque.tostring()); //2,1,8
console.log(mydeque.peekfront()); //檢視頭項 //2
console.log(mydeque.peekback()); //檢視尾項 //8
mydeque.clear(); //清空
console.log(mydeque.isempty()); //true
ES6語法 資料結構
資料結構 set的用法 weakset的用法 map的用法 weakmap的用法 weakset和weakmap分別是set和map的弱用法 set 這個特性可以用來去重 let arr 1 2,3 3,4 4,5 5,5 let list0 newset arr console.log list0...
ES6語法 set資料結構
set通過new的方式生成,他類似陣列,但不是陣列,他的乙個重要特點便是他的成員是無重複的!無重複的!無重複的!重要的話說三次 const s new set 那麼在建立set的時候可以新增什麼上去呢?1.陣列,獲得乙個屋重複元素的set 如上所示,他得出來的是無重複的 那麼他是不是陣列 答案很明顯...
JS實現資料結構 佇列 基於ES6語法
佇列 概念 佇列是遵循先進先出 fifo 原則的一組有序的項。佇列可用的方法 實現 物件模擬佇列 1.建立佇列類 class queue enqueue rest dequeue const result this.items this.lowestcount 儲存要刪除的值 delete this...