佇列 雙端佇列

2022-09-14 22:21:30 字數 1486 閱讀 7983

/* 1.佇列

佇列是遵循先進先出(fifo,也稱為先來先服務)原則的一組有序的項。

佇列在尾部新增新 元素,並從頂部移除元素。

最新新增的元素必須排在佇列的末尾 */

class queue ;

}//向佇列新增元素

enqueue(element)

//檢查佇列是否為空並獲取它的長度

isempty()

//從佇列移除元素

dequeue()

const result = this.items[this

.lowestcount];

delete

this.items[this

.lowestcount];

this.lowestcount++;

return

result;

}//從佇列移除元素

peek()

return

this.items[this

.lowestcount];

}//清空佇列

clear();

this.count = 0;

this.lowestcount = 0;

}//建立 tostring 方法

/*在 stack 類中,我們從索引值為 0 開始迭代 items 中的值。由於 queue 類中的第乙個索引

值不一定是 0,我們需要從索引值為 lowestcount 的位置開始迭代佇列。

*/tostring()

let objstring = `$`;

for (let i = this.lowestcount + 1; i < this.count; i++) ,$` }}

}

/* 

雙端佇列(deque,或稱 double-ended queue)是一種允許我們同時從前端和後端新增和移除

元素的特殊佇列

由於雙端佇列同時遵守了先進先出和後進先出原

則,可以說它是把佇列和棧相結合的一種資料結構。

既然雙端佇列是一種特殊的佇列,我們可以看到其建構函式中的部分**和佇列相同,包括

相同的內部屬性和以下方法:isempty、clear、size 和 tostring。

*/class deque ;

}// 檢查佇列是否為空並獲取它的長度

isempty()

// 向佇列新增元素

addback(element)

// 向雙端佇列的前端新增元素

addfront(element) else if(this.lowestcount>0) else

this.items[i] = this.items[i - 1];

} this.count++;

this.lowestcount = 0;

this.items[0] = element; // }}

}

佇列 , 雙端佇列, 棧

注意 linkedlist中新增或者取出的方法有很多,比如add,offer,offerfirst,offerlast,push.根據使用的資料結構不同,最好區分使用.一,佇列queue fifo first in first out 0,模型上一般為右進左出,右端入隊並稱為隊尾,左端出隊並稱為隊頭...

棧 佇列 雙端佇列

棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,由於棧資料結構只允許在一端進行操作,因而按照後進先出 lifo,last in first out 的原理運作。棧結構實現 棧可以用順序表實現,也可以用鍊錶實現。棧的操作 功能stack 建立乙個新的空棧 push i...

棧 佇列 雙端佇列

一 棧結構實現 class stack object 棧 def init self self.items defis empty self 判斷是否為空 return self.items defpush self,item 加入元素 defpop self 彈出元素 return self.it...