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 + -
显示快捷键?