js資料結構之優先佇列和迴圈佇列

2021-08-02 18:55:12 字數 1582 閱讀 1573

實現乙個優先佇列:設定優先順序,然後在正確的位置新增元素。

我們這裡實現的是最小優先佇列,優先順序的值小(優先順序高)的元素被放置在佇列前面。

//建立乙個類來表示優先佇列

function

priorityqueue

() this.enqueue=function

(e,p)else

}if(!added)

}

}this.isempty=function

() this.dequeue=function

() this.clear=function

() this.print=function

() this.mylength=function()}

var pqueue=new priorityqueue();

pqueue.enqueue('a',2);

pqueue.enqueue('b',1);

pqueue.enqueue('c',2);

pqueue.enqueue('d',2);

pqueue.enqueue('e',1);

pqueue.print();

//[ queueele ,

// queueele ,

// queueele ,

// queueele ,

// queueele ]

在正確的位置新增元素:如果隊列為空,可以直接將元素入列。否則,就需要比較該元素與其他元素的優先順序。當找到乙個比要新增的元素優先順序更低的項時,就把新元素插入到它之前,這樣,對於其他優先順序相同,但是先新增到佇列的元素,我們同樣遵循先進先出的原則。

最大優先佇列:優先順序的值大的元素放置在佇列前面。

實現擊鼓傳花遊戲。

//建立乙個類來表示佇列

function

queue

() this.dequeue=function

() this.front=function

() this.isempty=function

() this.mylength=function

() this.clear=function

() this.print=function()}

//擊鼓傳花

function

hotpotato

(namelist,num)

return queue.dequeue();

}var namelist=['a','b','c','d','e'];

var winner=hotpotato(namelist,7);

console.log(winner+"獲勝");

//淘汰c

//淘汰b

//淘汰e

//淘汰d

//a獲勝

得到乙份名單,把裡面的名字全都加入佇列。給定乙個數字,然後迭代佇列。從佇列頭移除一項,加入到佇列尾部,模擬迴圈佇列。一旦傳遞次數達到給定的數字,拿到花的那個人就被淘汰。最後只剩乙個人的時候,他就是勝利者。

資料結構之迴圈佇列

資料結構之佇列 迴圈佇列 ide vs2010 佇列操作 初始化 入隊 插入隊尾 出隊 即取隊頭 判斷佇列是否非空 滿 include using namespace std define max len 100 定義節點型別 typedef struct queue queue 初始化 void ...

資料結構之迴圈佇列

4.10 佇列的定義 佇列定義 一種先進先出的線性表。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。隊頭 隊尾 出佇列 a1 a2 a3 a4 an 入佇列 佇列有類似線性表的各種操作,不同的就是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。線性表有線性儲存和鏈式儲存。棧是線性表,有這兩種儲存方...

資料結構之迴圈佇列

怎麼理解上面這段話呢?就是說在現實生活的數個人排隊辦理業務,辦完業務的人自然就走了,後邊的人會往前頂。但是在程式設計中,是死的,他不會自動往前頂。因而迴圈佇列就出現了。其實就是像上段話說的解決 中資料不會自動往前頂,會出現前邊已經空了,但是插不進資料的問題。怎麼解決的呢?資料不會往前頂,但是尾部指標...