clnkdeli.c
来自「《数据结构》教材源程序,可以让你轻松的根据教材学习数据结构」· C语言 代码 · 共 35 行
C
35 行
/*****************************************************/
/* 在循环单链表中删除第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 + =
减小字号Ctrl + -
显示快捷键?