上次写了对链表的认识和在链表中插入元素,今天就来写写链表中元素的删除。
链表的删除为按元素的值进行删除;
pCur 表示要删除的结点;pfront 表示要删除结点的前置结点,让其的指针域保存下一个结点的地址,则将pCur删除。
具体代码如下:
PLink Search(PLink phead, ELEM_TYPE val) // 查找链表中的元素
{
PLink pCur = phead;
while (pCur->pnext != NULL)
{
if (pCur->pnext->mdata == val)
{
return pCur;
}
pCur = pCur->pnext;
}
return NULL;
}
bool DeleteKey(PLink phead, ELEM_TYPE val)
{
if (phead == NULL)
{
return false;
} // 判断链表结构是否合理
PLink pfront = Search(phead, val);
if(pfront == NULL)
{
return false;
}
PLink pCur = pfront->pnext;
pfront->pnext = pCur->pnext; //对链表进行删除
free(pCur);
return true;
}