C語(yǔ)言 鏈表的刪除操作
當(dāng)需要?jiǎng)h除鏈表中某一結(jié)點(diǎn),只需將該結(jié)點(diǎn)的前一結(jié)點(diǎn)的指針域指向該結(jié)點(diǎn)的后一結(jié)點(diǎn),之后釋放該結(jié)點(diǎn)即可,過(guò)程如圖所示。
1.定義指針p=h,指針q=p->next。
2.如果q->data==x,則:
?讓p指針?biāo)赶蚪Y(jié)點(diǎn)的next指向q->next,將q結(jié)點(diǎn)懸空。
?釋放q結(jié)點(diǎn)。
?讓q=p->next,以便搜索下一個(gè)符合要求的結(jié)點(diǎn);
3.如果q->data!=x,則令p、q指針向后移,具體為:
p=q;
q=q->next ;
刪除結(jié)點(diǎn)的函數(shù)del()具體程序代碼如下:
void del(SLIST *h,int x)
{
SLIST *p.*q;
p=h;q=p->next;
while(q!=NULL)
{
if (q->data==x)
{
p->next-Bq->next;
free(q);
q=p->next ;
}
else
{
p=q;
q=q->next ;
}
}
}
點(diǎn)擊加載更多評(píng)論>>