PTA函数题
6-1-4 顺序表的删除
分数 10
作者 YJ
单位 西南石油大学
给定一个顺序存储的线性表,请设计一个函数删除所有值小于min和值大于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。
函数接口定义:
List Delete( List &L, ElementType minD, ElementType maxD );
L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较。函数Delete应将Data[]中所有值小于minD和值大于maxD的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表。
裁判测试程序样例:
#include <stdio.h>
#define MAXSIZE 20
typedef int ElementType;
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position last; /* 线性表的长度*/
};
List Delete( List &L, ElementType minD, ElementType maxD );
List ReadInput();
{
int num,i,temp;
scanf(“%d”,&num);
for(i=0;i<num;i++)
{
scanf(“%d”,&(L->Data[num]));
}
L->last = num-1;
}
void PrintList( List L );
{
for(int i=0;i<=L->last;i++)
{
printf(“%d ”,L->Data[i]);
}
}
int main()
{
List L;
ElementType minD, maxD;
int i;
L = ReadInput();
scanf("%d %d", &minD, &maxD);
L = Delete( L, minD, maxD );
PrintList( L );
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
在这里给出一组输入。例如:
10
4 -8 2 12 1 5 9 3 3 10
0 4
输出样例:
在这里给出相应的输出。例如:
4 2 1 3 3
请问一下这个怎么做,为什么不写提交也是段错误?
LNode* Delete(LNode* &L,int minD,int maxD)
{
int k=0;
for(int i=0;i<=L->last;i++)
{
if(L->Data[i]>=minD&&L->Data[i]<=maxD)
{
L->Data[k++]=L->Data[i];
}
}
L->last=k-1;
return L;
}
写了这个也是段错误