编写一个算法,从给定的顺序表A中删除值在x~y(x<y)之间的所有元素,要求
以较高的效率来实现。
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType *elem;
int length;
}SqList;
Status InitList(SqList &L)
{
int i;
L.elem=new ElemType[100];
if(!L.elem) exit(OVERFLOW);
L.length=10;
return OK;
}
Status GetElem(SqList &L,int i,ElemType &e)
{
if(i<1||i>L.length) return ERROR;
e=L.elem[i];
return OK;
}
Status DeleteList(SqList &L,int x,int y)
{
int i,j,z;
z=y-x+1;
i=x;
while (L.elem[i]!=NULL)
{
L.elem[i]=L.elem[i+z];
i=i+1;
}
L.length=L.length-z;
return OK;
}
int main()
{
SqList L;
InitList(L);
ElemType e;
int x,y;
int i,k,l;
int q=1;
for(i=0;i<10;i++)
{
L.elem[i]=i;
printf("%5d",L.elem[i]);
}
printf("\n");
printf("请输入x,y:");
scanf("%d,%d",&x,&y);
DeleteList(L,x,y);
for(i=0;i<L.length;i++)
printf("%5d",L.elem[i]);
printf("\n");
return 0;
}
望采纳, 谢谢!