参照sq_delete函数,对一个n不超过1024的线性表进行删除操作。
Description
实现一个线性表:
参照课本P5上的sq_delete函数,对一个n不超过1024的线性表进行删除操作
Input
第一行有一个整数n,表示线性表的大小,第二行有n个整数,分别是list1,list2...listn。
第三行有一个整数q,表示q次删除操作,接下来q行,每行有一个整数k,表示删除线性表中第k个元素。
Output
对于每次删除操作输出一行,如果k不合法,输出 -1, 否则输出删除的元素。
Sample Input
5
3 2 1 5 4
3
5
5
2
Sample Output
4
-1
2
#include <stdio.h>
#include <stdlib.h>
static int n;
static int list[1024];
int sq_delete(int*list,int k)
{
int j,value;
if(k<1||k>n)
{
return -1;//如果未找到,返回-1
}
else
{
value=list[k-1];//因为数组从0开始,故第k个元素标号为k-1
for(j=k;j<n;j++)
{
list[j-1]=list[j];//删除元素之后的每个元素向前移动
}
n--;//线性表长度减一
return value;//返回每次删除的值
}
return 0;
}
int main()
{
int i,j,q,k,l;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&list[i]);
}
scanf("%d",&q);
for(i=0;i<q;i++)
{
scanf("%d",&k);
printf("%d\n",sq_delete(list,k));
}
}