简要分析1103: 删除顺序表中指定区间的数据的几种方法
题目描述
建立顺序表L,将指定区间的数据从顺序表中删除。假设指定区间是合法数据,无序做合法性判断。测试数据为整型。
输入
第一行是表长n;第二行是表中数据元素;第三行是闭区间。
输出
删除以后的顺序表中的数据元素。
样例输入
复制
10
22 32 11 23 43 59 17 65 45 57
10 20
样例输出
22 32 23 43 59 65 45 57
菜鸡博主ac代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int a[100];
int length;
}Sqlist;
void Initlist(Sqlist *&L)
{
L=(Sqlist *)malloc(sizeof(Sqlist));
L->length=0;
}
void Createlist(Sqlist *&L)
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&L->a[i]);
}
L->length=n;
}
void Delnolist(Sqlist *&L)
{
int i,k=0,n,a,b;
scanf("%d",&a);
scanf("%d",&b);
n=L->length;
for(i=0;i<n;i++)
{
if(L->a[i]<a||L->a[i]>b)
{
L->a[k]=L->a[i];
k++;
}
L->length=k;
}
}
void outputlist(Sqlist *&L)
{
int i;
for(i=0;i<L->length;i++)
{
printf("%d ",L->a[i]);
}
}
int main()
{
Sqlist *L;
Initlist(L);
Createlist(L);
Delnolist(L);
outputlist(L);
return 0;
}
空间复杂度要求为O(1),我们最好利用原变量完成任务。