手写二叉堆错了,求调!
  • 板块学术版
  • 楼主YONIC
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/5/6 19:43
  • 上次更新2023/10/28 02:01:59
查看原帖
手写二叉堆错了,求调!
536439
YONIC楼主2022/5/6 19:43
struct PQueue_node{
	node value[M7];
	int size=0;
	void up(int x){
		while(x>1&&value[x]<value[x>>1]){
			node temp;
			temp=value[x];
			value[x]=value[x>>1];
			value[x>>1]=temp;
			x>>=1;
		}
	}
	void push(node x){
		value[++size]=x;
		up(size);
	}
	void pop(){
		value[1]=value[size];
		--size;
		int x=1;
		while(x<<1<size){
			if(x<<1==size||value[x<<1]<value[x<<1|1]){
				node temp;
				temp=value[x];
				value[x]=value[x<<1];
				value[x<<1]=temp;
				x<<=1;
			}
			else{
				node temp;
				temp=value[x];
				value[x]=value[x<<1|1];
				value[x<<1|1]=temp;
				x<<=1;
				++x;
			}
		}
	}
	node top(){return value[1];}
	bool empty(){return !size;}
}Q;
2022/5/6 19:43
加载中...