BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #74701同步于 2013/10/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问个结构体指针复制的问题

OrigDesigner
2013/10/22镜像同步1 回复
在做数据结构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保存或复制?
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
rollse机器人#1 · 2013/10/23
看不到detelemin的实现。。。 可能的原因:H指向的是堆顶结点,deletemin删除最小的结点,如果是个最小堆,堆顶结点就是,执行完后H应该指向了堆顶的左孩子或者右孩子结点,当然变了。 你可以定义一个临时的指针变量PriorityQueue tempH,deletemin最后让tempH指向新的堆顶并返回