dlnkdelx.c

来自「《数据结构》教材源程序,可以让你轻松的根据教材学习数据结构」· C语言 代码 · 共 46 行

C
46
字号

 /*****************************************************/
 /*          在双链表中删除一个值为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 + =
减小字号Ctrl + -
显示快捷键?