什麼是堆(heap)
優先佇列(priority queue):特殊的」佇列」,取出元素的順序優先權的大小,而不是元素在佇列的先後順序;
1.使用完成二叉樹;
2.陣列表述;
堆中的路徑(25 分)
將一系列給定數字插入乙個初始為空的小頂堆h。隨後對任意給定的下標i,列印從h[i]到根結點的路徑。
輸入格式:
每組測試第1行包含2個正整數n和m(≤1000),分別是插入元素的個數、以及需要列印的路徑條數。下一行給出區間[-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
#include
#include
#define maxn 1000
#define minh -10001
int h[maxn],size;
void create()
void insert(int x)
h[i] = x;
}int main()
for(int i=0;iscanf("%d",&input);
printf("%d",h[input]);
while(input>1)
printf("\n");
}return
0;}
大頂堆小頂堆
堆通常是乙個可以被看做一棵完全二叉樹的陣列物件 如果對一棵有n個結點的完全二叉樹的結點按層序編號 從第1層到第 1層,每層從左到右 則對任一結點i 1 i n 有 1 如果i 1,則結點i無雙親,是二叉樹的根 如果i 1,則其雙親是結點。2 如果2i n,則結點i為葉子結點,無左孩子 否則,其左孩子...
堆排(大頂堆,小頂堆)
分類 資料結構 演算法相關 2009 10 15 12 26 2289人閱讀收藏 舉報汗,別人都說大小頂堆只是改改大於號的問題,可我的 從大頂堆只改動大於號調整為小頂堆竟然越界樂,掣肘!後來幾經更改才發現是傳參的問題 見 看來大頂堆改小頂堆不是 亦或是我rp出點問題?搞笑的是 磚頭 c b 竟然對越...
資料結構 佇列 雙端佇列 小頂堆 大頂堆
queue 佇列 特點 先進先出 q.push num 從後面進佇列 q.pop 從前面出佇列 q.front 讀取佇列最前面的元素 q.back 讀取佇列最後面的元素 deque 雙端佇列 特點 兩端都可以出進 q.push front num 從前面進佇列 q.push back num 從後面...