当需要删除链表中某一结点,只需将该结点的前一结点的指针域指向该结点的后一结点,之后释放该结点即可,过程如图所示。
1.定义指针p=h,指针q=p->next。
2.如果q->data==x,则:
•让p指针所指向结点的next指向q->next,将q结点悬空。
•释放q结点。
•让q=p->next,以便搜索下一个符合要求的结点;
3.如果q->data!=x,则令p、q指针向后移,具体为:
p=q;
q=q->next ;
删除结点的函数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 ;
}
}
}
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>