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

📄 dlnkdelx.c

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