- 试设计一个算法,删除一个顺序表从第i个元素开始的k个元素
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define OK 1
#define ERROR 0
#define MAXSIZE 20
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType data[MAXSIZE];
int Length;
}SqList;
Status InitSqList(SqList * L)
{
L->Length=0;
return OK;
}
Status Create(SqList * L,int n)
{
srand(time(0));
for(int i=0;i<n;i++)
{
L->data[i]=rand()%100+1;
L->Length++;
}
return OK;
}
Status Delete(SqList * L,int Location)
{
if(L->Length==0)
return ERROR;
if(Location<L->Length)
{
for(int i=Location;i<L->Length;i++)
{
L->data[i-1]=L->data[i];
}
L->Length--;
}
return OK;
}
void Print(SqList * L)
{
for(int i=0;i<L->Length;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
}
int main()
{
SqList L;
int ElemNumber;
int Location,Number;
InitSqList(&L);
printf("请输入元素个数:\n");
scanf("%d",&ElemNumber);
Create(&L,ElemNumber);
Print(&L);
printf("请输入删除的位置和删除的元素个数:\n");
scanf("%d%d",&Location,&Number);
if(Number>=L.Length)
{
printf("输入有误\n");
return 0;
}
else
{
while(Number--)
{
Delete(&L,Location);
}
}
Print(&L);
return 0;
}