swust oj1103删除顺序表指定区域的数据

本文介绍了一种算法,用于从顺序表中删除指定区间的元素。通过创建两个顺序表,一个用于存储原始数据,另一个用于存储过滤后的数据,实现了指定区间数据的删除功能。示例代码展示了如何实现这一过程,包括初始化列表、创建列表、删除列表中的指定区间数据以及输出处理后的列表。

1103: 删除顺序表中指定区间的数据
题目描述
建立顺序表L,将指定区间的数据从顺序表中删除。假设指定区间是合法数据,无序做合法性判断。测试数据为整型。

输入
第一行是表长n;第二行是表中数据元素;第三行是闭区间。

输出
删除以后的顺序表中的数据元素。

样例输入
10
22 32 11 23 43 59 17 65 45 57
10 20
样例输出
22 32 23 43 59 65 45 57

 #include<stdio.h>//oj1103 删除顺序表中指定区域的数据
 #include<stdlib.h>
 typedef struct
 {
     int data[100];
     int length;

 }Sqlist;
 void Initlist(Sqlist *&L)
 {
     L=(Sqlist *)malloc(sizeof(Sqlist));
     L->length=0;
 }
 void Creatlist(Sqlist *&L,int n)
 {
     for(int i=0;i<n;i++)
     {
         scanf("%d",&L->data[i]);
     }
     L->length=n;
 }
 void Deletelist(Sqlist *&L,Sqlist *&L1,int n,int a,int b)
 {
     int k=0;//建立两个顺序表,L1来存放不是这一区间的数据,输出L1
     for(int i=0;i<n;i++)
     {
         if(L->data[i]>=a&&L->data[i]<=b)
         {
             continue;//跳过这个区域的数据
         }
         L1->data[k]=L->data[i];
         k++;
     }
     L1->length=k;
 }
 void Putlist(Sqlist *L1)
 {
     for(int i=0;i<L1->length;i++)
     {
         printf("%d ",L1->data[i]);
     }
 }
 int main()
 {
     Sqlist *L,*L1;
     Initlist(L);
     Initlist(L1);
     int n,a,b;
     scanf("%d",&n);
     Creatlist(L,n);
     scanf("%d%d",&a,&b);
     Deletelist(L,L1,n,a,b);
     Putlist(L1);
     return 0;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值