顺序存储的线性表,设计程序。

给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。
函数接口定义:
List Delete( List L, ElementType minD, ElementType maxD );
其中List结构定义如下:
typedef int Position;
typedef struct LNode *List;
struct LNode
{
ElementType Data[MAXSIZE]; /ElementType 可以用C中基本数据类型,比如:int等/

Position Last; /* 保存线性表中最后一个元素的位置 */
};
L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较;minD和maxD分别为待删除元素的值域的下、上界。函数Delete应将Data[]中所有值大于minD而且小于maxD的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表。

程序样例:

#include

#define MAXSIZE 20

typedef int ElementType;

typedef int Position;

typedef struct LNode *List;

struct LNode {

ElementType Data[MAXSIZE];

Position Last; /* 保存线性表中最后一个元素的位置 */

};

List ReadInput(List L); /* 此函数实现线性表的输入。元素从下标0开始存储 */

void PrintList( List L ); /* 此函数实现线性表的输出*/

List Delete( List L, ElementType minD, ElementType maxD );

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;

}

List ReadInput() /* 此函数创建线性表并实现线性表的输入。返回线性表的地址。元素从下标0开始存储 */

{

}

void PrintList( List L )/* 此函数实现线性表的输出*/

{

}

List Delete( List L, ElementType minD, ElementType maxD )

{

}


List Delete( List L, ElementType minD, ElementType maxD )
{
    
    int i,j=0,k = L->Last;
     for(i = 0;i<=k;i++)
    {
        if(L->Data[i]<=minD||L->Data[i]>=maxD)
        {
            L->Data[j++] =  L->Data[i];
        }
        else L->Last--;
     }
    return L;
    
}