📄 dlnkdelx.c
字号:
/*****************************************************/
/* 在双链表中删除一个值为x的结点 */
/* 文件名dlnkdelx.c,函数名delete_num_dlink_list() */
/*****************************************************/
dnode *delete_num_dlink_list(dnode *head,datatype x)
{
dnode *q;
if(!head)/*双链表为空,无法进行删除操作*/
{printf("双链表为空,无法进行删除操作");return head;}
q=head;
while(q&&q->info!=x) q=q->rlink;/*循环结束后q指向的是值为x的结点*/
if(!q)
{
printf("\n没有找到值为%d的结点!不做删除操作!",x);
}
if(q==head&&head->rlink)/*被删除的结点是第一个结点并且表中不只一个结点*/
{
head=head->rlink;
head->llink=NULL;
free(q);return head;
}
if(q==head&&!head->rlink)/*被删除的结点是第一个结点并且表中只有这一个结点*/
{
free(q);
return NULL;/*双链表置空*/
}
else
{
if(!q->rlink)/*被删除的结点是双链表中的最后一个结点*/
{
q->llink->rlink=NULL;
free(q);
return head;
}
else/*q是在一个有2个以上结点的双链表中的一个非开始、也非终端结点*/
{
q->llink->rlink=q->rlink;
q->rlink->llink=q->llink;
free(q);
return head;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -