返回信息流在做数据结构battle over city的题,用二叉堆,下面是定义
typedef struct highways *ElementType;
typedef struct HeapStruct *PriorityQueue;
struct HeapStruct
{
int Capacity;
int Size;
ElementType Elements;
};
struct highways
{
int v;
int w;
int cost;
}highway[MAX];
PriorityQueue H;
就是在结构指针 堆H的内容里面,Elements是一个结构指针(或数组)highway[]
然后我通过insert操作把H建好,接下来要对H作N次不同操作,每一次都要求H保留原始值;
但是我操作第一次,由于deletemin,H就变了,所以。。。
所以我试了struct HeapStruct temp; 每一次操作前temp=*H; 函数调用&temp; 发现还是不行,操作一次后H就变empty了,有什么解决措施吗?可以将H保存或复制?
这是一条镜像帖。来源:北邮人论坛 / cpp / #74701同步于 2013/10/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问个结构体指针复制的问题
OrigDesigner
2013/10/22镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
看不到detelemin的实现。。。
可能的原因:H指向的是堆顶结点,deletemin删除最小的结点,如果是个最小堆,堆顶结点就是,执行完后H应该指向了堆顶的左孩子或者右孩子结点,当然变了。
你可以定义一个临时的指针变量PriorityQueue tempH,deletemin最后让tempH指向新的堆顶并返回