js實現資料結構—佇列
阿新 • • 發佈:2018-12-16
一、佇列建構函式 實現的方法:enqueue (入隊)、dequeue (出隊)、front (獲取佇列頭部元素)、isEmpty(是否為空)、size (佇列數量)
function Queue() { const items=[]; //入隊 this.enqueue = function (item) { items.push(item); }; //出隊 this.dequeue = function () { return items.shift() }; //獲取佇列頭部元素 this.front = function () { return items[0]; }; //判斷佇列元素是否為空 this.isEmpty = function () { return items.length === 0; }; //獲取佇列元素個數 this.size = function () { return items.length; }; }
二、使用2個棧,實現一個佇列
function Queue() { const stackOfGet = new Stack(); const stackOfPut = new Stack(); /** * 入隊 * */ this.enqueue = function (item) { while (0 < stackOfGet.count()) { stackOfPut.push(stackOfGet.pop()); } stackOfPut.push(item); }; /** * 出隊 * */ this.dequeue = function () { while (0 < stackOfPut.count()) { stackOfGet.push(stackOfPut.pop()); } return stackOfGet.pop(); }; /** * 佇列項數量 * */ this.size = function () { return stackOfGet.count() + stackOfPut.count(); }; /** * 檢視隊首元素 * */ this.front = function () { while (0 < stackOfPut.count()) { stackOfGet.push(stackOfPut.pop()); } return stackOfGet.top(); }; /** * 判斷佇列是否為空 * */ this.isEmpty = function () { return 0 === this.size(); }; /** * 清空佇列 * */ this.clear = function () { stackOfGet.clear(); stackOfPut.clear(); };