實現乙個優先佇列:設定優先順序,然後在正確的位置新增元素。
我們這裡實現的是最小優先佇列,優先順序的值小(優先順序高)的元素被放置在佇列前面。
//建立乙個類來表示優先佇列
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 入佇列 佇列有類似線性表的各種操作,不同的就是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。線性表有線性儲存和鏈式儲存。棧是線性表,有這兩種儲存方...
資料結構之迴圈佇列
怎麼理解上面這段話呢?就是說在現實生活的數個人排隊辦理業務,辦完業務的人自然就走了,後邊的人會往前頂。但是在程式設計中,是死的,他不會自動往前頂。因而迴圈佇列就出現了。其實就是像上段話說的解決 中資料不會自動往前頂,會出現前邊已經空了,但是插不進資料的問題。怎麼解決的呢?資料不會往前頂,但是尾部指標...