資料結構 佇列

2021-09-17 03:54:31 字數 1880 閱讀 9454

最近一直在學習圖資料結構,但是他用js實現需要用到字典,遍歷的時候又需要用到棧,所以接下來我先把原來學習資料結構所記的筆記整理出來

佇列:和我們日常生活中的排隊一樣,遵循的是fifo原則,及first in first out的原則

操作佇列的方法有:

向尾部插入元素 enqueue()方法完成進隊

刪除頭部的元素 dequeue()方法完成出隊

返回佇列中的第乙個元素 front()方法 及最先進入佇列和最先出佇列的元素

還有一些用於查詢的方法:

判斷乙個佇列是否為空 isempty()方法 如果為空就返回true 如果不為空就返回false

返回陣列的容量 size()方法

將乙個陣列列印出來 print()方法

接下來,我們將實現佇列這個類,首先,定義乙個佇列的類,類中有乙個私有陣列,存放著我們需要的元素:

let queue = function()
接下來,我們來定義佇列類的公共方法

//首先建立乙個佇列的類

let queue = function()

//刪除最開頭,也是最先新增的元素

this.dequeue = function(e)

//讀取佇列中的最先被新增 最先被刪除的元素

this.front = function()

//判斷陣列是否為空,如果為空就返回true 反之 就返回false

this.isempty = function()

//返回陣列的容量

this.size = function()

//列印陣列

this.print = function()

}

就像現實生活中的訂購特等艙的顧客先上機,訂購經濟艙的顧客後上機一樣,優先佇列就是對權重較大的元素(用1表示權重最大)優先進行操作,我們有兩種實現方法:

將不同的元素設定優先順序,根據優先及將元素新增到陣列的正確位置,修改的是enqueue方法

用入列操作新增元素以後,按照元素的優先順序執行出列,修改的是dequeue方法

我們將用第一種方法進行實現(如果用第二種的話用字典會更加合適一些),其他方法都不變,我們只對enqueue方法進行修改

//首先建立乙個佇列的類

var queue = function()

//在陣列末尾新增元素

this.equeue = function(element,priority)else{

var added = false;

for(let i=0;i函式解釋:這裡的equeue方法 和 以往的 equeue方法區別就是,新增的元素是乙個帶有優先順序屬性的元素(queueelements類new出來的乙個物件),在新增之前先判斷陣列的是否為空,如果為空就直接插入,如果不為空就對優先順序進行比較,只要找到比他大的就將該元素插入,將added設定為true,如果沒有找到比他還大的,那麼added依然是false,這時就將元素push到陣列的最後

基本思想就是:如果沒有輪到這個元素,就把該元素從頭部刪除新增到佇列的末尾,如果傳到了,就將該元素刪除,繼續迴圈剩下的元素

function hotpotato(namelist,num){

//建立乙個新的佇列

let queue = new queue();

//將所有元素加入姓名的列表

for(let i=0;i1){

let nameitem = "";

for(let i=0;i函式解釋:遊戲不停止的條件是佇列中元素的長度大於1,等於1時則擇出勝利者,迴圈,當num不等於7時,就把末尾的移到佇列前面,迴圈完畢,num=7,刪除這個時候處在尾部的元素,繼續執行上述操作,直至佇列中只剩乙個元素

以上是佇列的全部內容,還望各位同仁大神指點一二,我虛心接受

資料結構 佇列

一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...

資料結構 佇列

資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...

資料結構 佇列

code for fun created by dream whui 2015 1 25 include stdafx.h include include using namespace std define true 1 define false 0 define ok 1 define erro...