資料結構 優先佇列

2021-10-06 05:37:31 字數 1579 閱讀 9138

普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高端先出(first in, largest out)的行為特徵。通常採用堆資料結構來實現。

本**採用c#編寫,包含優先佇列的幾種常用操作:

此外,還有乙個相應的測試程式,測試演算法是否正確。

using system;

using system.collections.generic;

namespace datastructure =0

;// 入隊

// 將新的元素從樹葉 上移 到合適的位置

public

void

push

(int val)

}// 返回隊首元素

// 隊首元素位於堆頂,一定是最大的元素

public

inttop()

// 出隊

// 彈出堆頂元素,將堆中最後乙個元素置於堆頂,然後 下移 到合適的位置

public

intpop()

else

if(rightchild <= count && heap[cur]

< heap[rightchild]

)else

}return top;

}// 左孩子結點

static

intleftchild

(int node)

// 右孩子結點

static

intrightchild

(int node)

// 雙親結點

static

intparent

(int node)

// 交換兩個變數

static

void

swap

<

t>

(ref

t a,

reft b)

}// 測試類,用於測試演算法的正確性

class

test

", list.count)

;int choice = random.

next(0

,4);

if(choice ==0)

}}else

if(choice ==1)

}}else}}

while

(list.count >0)

", list.count)

;int top1 = list[list.count -1]

; list.

removeat

(list.count -1)

;int top2 = pq.

pop();

if(top1 != top2 || list.count != pq.count)

} console.

writeline

("恭喜,您的**通過了測試!");

}}}

資料結構 優先佇列

優先佇列是允許至少下列兩種操作的資料結構 insert 插入 deletermin 刪除最小者 它的工作室找出 返回 刪除優先佇列最小的元素。插入操作等於enqueue 入隊 而detemin則是佇列中dequeue 出隊 在優先佇列中的等價操作。determin函式也變更它的輸入。二叉堆 結構性 ...

資料結構 優先佇列

形象化描述 可以插隊的佇列。標頭檔案 定義方法 較為簡單的常見優先佇列可直接定義 如 priority queue,greater pq 即定義乙個越小的整數優先順序越大的優先佇列。若想實現自定義排序,需過載運算子 如 struct cmp 定義方法 priority queue,cmp pq 注意...

資料結構 優先佇列

優先佇列 pr iori tyqu eue priority queue prior ityq ueue 定義 普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高端先出 fi rsti...