從順序表中刪除自第i個元素開始的k個元素。若不夠k個元素時,將i后面的元素全部刪除。
#include <stdio.h>
#define MAXSIZE 100
typedef struct
{
int elem[MAXSIZE];
int last;
} SeqList;
void deletelist(SeqList *l,int i,int k);
int main()
{
int i,k,j=0;
SeqList *l;
SeqList a;
l=&a;
scanf("%d%d",&i,&k);//輸入i和k
while(scanf("%d",&l->elem[j])!=EOF)
j++;//輸入順序表內容
l->last=j-1;
deletelist(l,i,k);
return 0;
}
void deletelist(SeqList *l,int i,int k)
{
int j;
if(i>l->last+1||i<1)
printf("刪除位置不合法");
else
{
if(k>=l->last-i+2)
{
for(j=i-1; j<=l->last; j++)
l->elem[j]=0;
l->last=i-2;
}
else
{
for(j=i-1; j<i-1+k; j++)
l->elem[j]=0;
for(j=i-1; j<=l->last-k; j++)
l->elem[j]=l->elem[j+k];
l->last=j-1;
}
for(j=0; j<=l->last; j++)
printf("%d\n",l->elem[j]);
}
}