#define MAXN 1001//堆的表示及其操作 #define MINH -10001int H[MAXN],size;typedef struct HeapStruct *MinHeap; //最大堆的創建 struct HeapStruct{ ElementType *Elements;//存儲堆元素的數組 int Size;//堆的當前元素個數 int Capacity;//堆的最大容量 };void Create(){ size=0; H[0]=MINH;//設置"崗哨" } void Insert(int X)//插入 {//將X插入H。這里省略檢查堆是否已滿的代碼 int i; for(i=++size;H[i/2]>X;i/=2) H[i]=H[i/2]; H[i]=X; }int main(){ int n,m,x,i,j; scanf("%d %d",&n,&m); Create();//堆初始化 for(i=0;i<n;i++){//以逐個插入方式建堆 scanf("%d",&x); Insert(x); } for(i=0;i<m;i++){ scanf("%d",&j); PRintf("%d",H[j]); while(j>1){//沿根方向輸出各結點 j/=2; printf("%d",H[j]); } printf("/n"); } return 0;}
新聞熱點
疑難解答