事故现场来源于一个链表的删除功能,先看代码
// 移除节点
STGoodsInfo* SingleLink::Remove(STGoodsInfo*pHead, int iPos)
{
if(NULL == pHead)
{
return NULL;
}
if(iPos <=0)
{
return NULL;
}
STGoodsInfo* pTemp = pHead->pNext;
// 遍历到待删除节点的前一个节点
for(int i = 1;i<iPos;i++)
{
pHead = pHead->pNext;
pTemp = pHead;
}
/*
STGoodsInfo* pDel = pTemp->pNext; // 第二个节点(待删除节点)
pTemp->pNext = pDel->pNext;
free(pDel);
pDel = NULL;
*/
// 待删除节点
STGoodsInfo* pDel = pTemp->pNext;
pTemp->pNext == pDel->pNext;
free(pDel);
pDel = NULL;
return pHead;
}
很纳闷在打印链表的时候,程序崩溃。如下图所示的AB两段代码,为什么用A带就能正常运行,B代码不行呢?