首页 > 开发 > 综合 > 正文

堆中的路径

2024-07-21 02:51:32
字体:
来源:转载
供稿:网友

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表