📄 clnkdeli.c
字号:
/*****************************************************/
/* 在循环单链表中删除第i个结点 */
/* 文件名clnkdeli.c,函数名delete_pos_clink_list() */
/*****************************************************/
node *delete_pos_clink_list(node *head,int i)
{
node *pre=NULL,*q;
if(!head)/*如果表为空,则无法删除*/
{
printf("\n表为空,无法删除!");
return head;
}
if(i==1)/*如果要删除的是非空循环单链表中的第一个结点*/
{
pre=get_rear_clink_list(head);/*pre指向的是最后一个结点*/
q=head;/*q指向第一个结点,将被删除*/
head=head->next;/*删除第一个结点(1)*/
pre->next=head;/*因为是循环单链表,所以将最后一个结点的指针域设置为新的第一个结点(2)*/
}
/*其它情况下,需要找到被删除结点的前驱结点*/
pre=find_pos_clink_list(head,i-1);/*找要删除结点的前驱结点*/
if(!pre)/*被删除结点不存在,即表中总共也没有i个结点*/
{
printf("不存在第%d个结点",i);
}
else
{
q=pre->next;/*q指向被删除的结点*/
pre->next=q->next;/*删除q指向的结点(1)*/
}
free(q);/*释放空间*/
return head;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -