C語言快速實現優先佇列(排雷)

2021-10-03 01:17:14 字數 1069 閱讀 7803

為了簡單起見,存放資料的結構使用陣列。

組織序號

我們知道優先佇列,也叫大(小)頂堆(預設為二叉堆)。堆是一棵完全二叉樹,但實際上我們使用陣列並通過組織序號便能夠表示它,這依賴於完全二叉樹的良好性質。

為防止以後出錯或造成混亂,實現前一定要先確定好如何組織序號:

建堆操作

以 i nd

ex=0

index=0

index=

0 起始建立小頂堆為例

// start 起始索引 end 末尾索引

// min_heapify 在更新根節點後維護整個堆的堆序性

void

min_heapify

(elementtype* elements,

int start,

int end)

}void

createheap

(elementtype* elements,

int elementssize)

/*(1)對應*/

2*dad +

1<= end

/*(2)對應*/

if(son+

1<= end && elements[son+1]

)

/*對應*/				i = elementssize/2-

1

刪除操作(deletemin

//確保呼叫時 堆 非空

elementtype deletemin

(elementtype* elements,

int elementssize)

elements[i]

= lastone;

return min;

}

for

elements[i]

= lastone;

C語言實現排雷遊戲(多檔案)

遊戲功能 列印雷盤 隨機布雷 第一踩雷不死 重新布雷 擴充套件式掃雷 計算周圍雷的個數 關鍵點 玩遊戲的雷盤比實際定義的陣列小。memset初始化陣列 以位元組為單位初始化 rand函式給雷盤隨機位置布雷 用sand設定隨機數種子 第一步就踩到雷要這個雷移開,給玩家一次機會。踩到雷後根據情況決定是否...

C 使用優先佇列實現dijkstra

c 優先佇列的dijkstra解法 我使用二維陣列來儲存結果,找到了所有點之間的最短路徑 初始圖 ab cda0 4101b 2011 c8140 14d159 100結果 ab cda0 451b 2011 c8120 9d119 100標記陣列 用來尋找最終的路徑ab cdaa abab bbb...

C語言佇列實現

以下解釋片面,但便於初學者理解 1.佇列是先進先出的資料結構 2.佇列結構體只有頭和尾兩個指標,並不包含儲存的資料。它只負責記錄佇列的頭尾指向,方便理解佇列的實現。3.佇列成員結構體包含乙個用來儲存資料的變數,和乙個指向下個成員的指標,指標指向下乙個佇列成員。4.入隊要更改佇列結構體隊尾指標到下乙個...