閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內(nèi)。
說明:堆數(shù)據(jù)結構定義如下。對于n個元素的關鍵字序列(a1,a2,...,an),當且僅當滿足下列關系時稱其為堆:在一個堆中,若堆頂元素為最大元素,則稱為大頂堆;若堆頂元素為最小元素,則稱為小頂堆。堆常用完全二叉樹表示,圖8.11是一個大頂堆的例子。
堆數(shù)據(jù)結構常用于優(yōu)先隊列中,以維護由一組元素構成的集合。對應于兩類堆結構,優(yōu)先隊列也有最大優(yōu)先隊列和最小優(yōu)先隊列,其中最大優(yōu)先隊列采用大頂堆,最小優(yōu)先隊列采用小項堆。以下考慮最大優(yōu)先隊列。假設現(xiàn)已建好大頂堆A,且已經(jīng)實現(xiàn)了調(diào)整堆的函數(shù)heapify(A,n,index)。下面將C代碼中需要完善的3個函數(shù)說明如下。
(1)heapMaximum(A):返回大頂堆A中的最大元素。
(2)heapExtractMax(A):去掉并返回大頂堆A的最大元素,將最后一個元素"提前"到堆頂位置,并將剩余元素調(diào)整成大頂堆。(
3)maxHeapInsert(A,key):把元素key插入到大頂堆A的最后位置,再將A調(diào)整成大頂堆。優(yōu)先隊列采用順序存儲方式,其存儲結構定義如下:C代碼: