女人久久久www免费人成看片,国内自拍偷拍网,国产一区二区三区免费在线观看,欧美精品三区四区,91久久国产综合久久91,欧美成人精品第一区二区三区 ,美女成人在线观看

軟題庫 學習課程
試卷名稱
考試中心《》在線考試
試卷年份2010年下半年
試題題型【分析簡答題】
試題內(nèi)容

試題四
閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在對應欄內(nèi)。
[說明]
堆數(shù)據(jù)結構定義如下:
對于n個元素的關鍵字序列{a1, a2, …, an},當且僅當滿足下列關系時稱其為堆。

在一個堆中,若堆頂元素為最大元素,則稱為大頂堆;若堆項元素為最小元素,則稱為小頂堆。堆常用完全二叉樹表示,圖4-1是一個大頂堆的例子。

堆數(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代碼中需要完善的三個函數(shù)說明如下:
(1)heapMaximumA.:返回大頂堆A中的最大元素。
(2)heapExtractMaxA.:去掉并返回大頂堆A的最大元素,將最后一個元素“提前”到堆頂位置,并將剩余元素調(diào)整成大頂堆。
(3)maxHeapInsert(A,key):把元素key插入到大頂堆A的最后位置,再將A調(diào)整成大頂堆。
優(yōu)先隊列采用順序存儲方式,其存儲結構定義如下:
#define PARENT(i)  i/2
typedef struct array{
int *int_array;  //優(yōu)先隊列的存儲空間首地址
int array_size;  //優(yōu)先隊列的長度
int capacity;    //優(yōu)先隊列存儲空間的容量
} ARRAY;
[C代碼]
函數(shù)heapMaximum
int heapMaximum(ARRAY *A. { return   (1)  ;  }
函數(shù)heapExtractMax
int heapExtractMax(ARRAY *A. {
int max;
max=A->int_array[0];
(2)  ;
A->array_size --;
heapify(A,A->array_size,0);  //將剩余元素調(diào)整成大項堆
return max;
}
函數(shù)maxHeapInsert
int maxHeapInsert(ARRAY *A, int key){
int i, *p;
if (A->array_size==A->capacity)  {  //存儲空間的容量不夠時擴充空間
P=(int*)realloc(A->int_array, A->capacity *2 * sizeof(int));
if (!p) return -1;
A->int_array=p;
A->capacity=2 * A->capacity;
}
A->array_size ++;
i =   (3)  ;
while (i>0 &&   (4)  ) {
A->int_array[i]=A->int_array[PARENT(i)];
i=PARENT(i);
}
(5)  ;
return 0;
}
根據(jù)以上說明和C代碼,填充C代碼中的空。
根據(jù)以上C代碼,函數(shù)heapMaximum、heapExtractMax和maxHeapInsert的時間復雜度的緊致上界分別為(6)  、(7)  和 (8)(用O符號表示)。
(9)若將元素10插入到堆A=(15,13,9,5,12,8,7,4,0,6,2,1)中,調(diào)用maxHeapInsert函數(shù)進行操作,則新插入的元素在堆A中第      個位置(從1開始)。

查看答案

相關試題