双链表删除操作时,free处弹出对话框,求解释谢谢
p=getnode(t,i); //getnode()为得到删除的i节点的前一个节点
if(p==NULL)
printf("wei zi error a");
else
{
p->prio->next=p->next;
p->next->prio=p->prio;
free(p); //运行完此句后,错误。其中i节点信息已删除,错误如下图
}
请问下面的话是什么意思啊?
【
Windows 已在 rr.exe 中触发一个断点。
其原因可能是堆被损坏,这说明 rr.exe 中或它所加载的任何 DLL 中有 Bug。
原因也可能是用户在 rr.exe 具有焦点时按下了 F12。
输出窗口可能提供了更多诊断信息。
】
[解决办法]
if(p==NULL)
printf("wei zi error a");
else
{
if(p->prio) //避免操作首结点之前
p->prio->next=p->next;
else
t = p->next;//删除首结点还要把首指针要后移
if(p->next) //避免操作尾结点之后
p->next->prio=p->prio;
free(p);
}
不能修改,发错了只得再回复一个,修改了点,删首结点时的问题