C語言 鏈表的刪除操作
當(dāng)需要刪除鏈表中某一結(jié)點,只需將該結(jié)點的前一結(jié)點的指針域指向該結(jié)點的后一結(jié)點,之后釋放該結(jié)點即可,過程如圖所示。
1.定義指針p=h,指針q=p->next。
2.如果q->data==x,則:
?讓p指針?biāo)赶蚪Y(jié)點的next指向q->next,將q結(jié)點懸空。
?釋放q結(jié)點。
?讓q=p->next,以便搜索下一個符合要求的結(jié)點;
3.如果q->data!=x,則令p、q指針向后移,具體為:
p=q;
q=q->next ;
刪除結(jié)點的函數(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 ;
}
}
}
點擊加載更多評論>>