有一个双向链表L,类型Xtype,
有一个删除节点的函数,
long delNode(Xtype *&Lhead,Xtype *&P)
{
if(P == null || Lhead == null)
return 0;
if(P->prior != null)
P->prior->next = P->next;
else
Lhead = P->next;
if(P->next != null)
P->next->prior= P->prior;
free(P);
return 1;
}
两个Xtype指针P1,P2分别指向L的两个节点,且P1,P2,P2->next均非空
调用1:delNode(L,P1);正确删除P1;
若使P2 = P2->next;调用2:delNode(L,P2->next);结果错误,
调用3:delNode(L,P2);正确删除P2,
调用2产生错误的位置为P->prior->next = P->next;执行完此句之后P指向P->next,原因未知。