7-5 堆中的路徑 (25 分)
將一系列給定數字插入乙個初始為空的小頂堆h
。隨後對任意給定的下標i
,列印從h[i]
到根結點的路徑。
每組測試第1行包含2個正整數n和m(≤),分別是插入元素的個數、以及需要列印的路徑條數。下一行給出區間[-10000, 10000]內的n個要被插入乙個初始為空的小頂堆的整數。最後一行給出m個下標。
對輸入中給出的每個下標i
,在一行中輸出從h[i]
到根結點的路徑上的資料。數字間以1個空格分隔,行末不得有多餘空格。
5 3
46 23 26 24 10
5 4 3
24 23 10
46 23 10
26 10
題目分析:考查最小堆(優先佇列)的實現 需要注意的是 利用插入操作建立最小(大)堆 和 先把資料讀入完全二叉樹 再調整的方法 可能建成的堆不同 並且他們的時間複雜度也不同(插入操作所需要的時間複雜度為 o(nlogn) 第二種方法的時間複雜度為 線性時間)
1view code#define _crt_secure_no_warnings
2 #include3 #include4 #include
56 typedef struct heapstruct*minheap;
7struct
heapstruct8;
1314 minheap creatminheap(int
capacity)
1523
24void insert(minheap h, int
element)
2531
32void
delete(minheap h)
3346 h->elements[parent] =tmp;47}
4849
void precdown(minheap h,int
i)50
63 h->elements[parent] =tmp;64}
6566
void
buildheap(minheap h)
6771
72void print(minheap h,int
i)73
79 printf("
%d", h->elements[0
]);80}81
intmain()
8292
for (int j = 0; j < m; j++)
9399 }
PTA 資料結構與演算法題目集(中文)6 2
6 2 順序表操作集 20 分 本題要求實現順序表的操作集。list makeempty position find list l,elementtype x bool insert list l,elementtype x,position p bool delete list l,positio...
PTA 資料結構與演算法題目集(中文)6 5
6 5 鏈式表操作集 20 分 本題要求實現鏈式表的操作集。position find list l,elementtype x list insert list l,elementtype x,position p list delete list l,position p 其中list結構定義如...
PTA資料結構與演算法題目集(中文)7 18
題意 有兩個視窗a,b,題目給出a視窗處理完兩個顧客,b視窗處理完乙個顧客,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。我們可以給出兩個佇列q1,q2分別表示a,b視窗,編號為奇數的顧客存放到q1中,為偶數的顧客存放到q2中。include include include include...