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

3134

被折叠的 条评论
为什么被折叠?



