堆中的路径

来源:互联网 发布:好运通软件下载 编辑:程序博客网 时间:2024/05/21 15:46

#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;}


0 0