⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clnkdeli.c

📁 《数据结构》教材源程序,可以让你轻松的根据教材学习数据结构
💻 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 + -