单链表第七题(删除指定范围值)

7.设在一个带表头节点的单链表中所有元素节点的数据值无序,

试编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素(若存在)

思路:

此题单链表无序;

如果有序的话,可以找到第一个大于等于给定值和第一个小于等于给定值的元素 

把中间删除就行了。

但这里是无序的,就全部遍历一遍,

找到符合条件的,就把它删除;找不到就不删除

/*

 设一个带头节点的单链表所有元素的数据值无序,

试编写函数删除表中介于给定的两个值(作为函数参数给出)之间的元素

分析:

           分别设置pre,p,r指针,遍历,符合条件便进行删除。

*/

#define_CRT_SECURE_NO_WARNINGS

#inclulde<stdio.h>

#include<stdlib.h>

#include"linkStruct.h"//通过自创建头文件引入结构体,ctrl+鼠标左键点击即可查看

void   deleteNum(Link   *h,int   min,int  max){

             Link   *pre=h,*p=h->next,*r;

             while(p){

                     if(p->data>min&&p->data<max){//符合条件,进行删除

                        r=p->next;

                        pre->next=p->next;

                         free(p);

                         p=r;

                     }

                      else{

                              pre=p;

                              p=p->next;

                       }

            }

}

int  main(){

            int  min,max;

             Link*head;

             Link*createLink(int);//创建链表的代码,单独封装成一个文件

             void     printfNowLink(Link*);

             head=createLink(0);

             printf("请输入要删除的值所在的范围:\n");

             printf("min=");

             scanf("%d",&max);

             deleteNum(head,min,max);

              printfNowLink(head);

              return    0; 

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值