编写一个算法,从顺序表中删除自第 i 个元素开始的 k 个元素

2024-12-03 00:40:55
推荐回答(4个)
回答1:

#include
int main()
{
int a[999],j,i=666,k=66;
for(j=0;j++;j<999)
scanf("%d",a[j]); //输入数
fun(*a,j,i,k); //调用fun函数
for(j=0;j++;j<(j-k)) //打印剩余的数
printf("%4d",a[j]);
}
void fun(int a[] ,int j, int i, int k )
{
for(;i++;i+k a[i]=a[i+k];
}
fun函数的作用就是删除k个数,999,666,66是我随便定的数,你可以改

回答2:

int list[]=new int[n];
for(int x=i;x<(i+k);x++)
list[x]=NULL;

回答3:

可能我的程序中的下标比较乱,因为我程序中的数组下标是从0开始的。

如果有不会的依然可以问我

#include 
#include 
#include 
#include 

///函数delet 参数的含义:删除的是数组a中的元素,数组a一共有n个元素
///删除数组a中从i开始的k个元素
void delet(int *a, int n, int i, int k)
{
    int j;
    for(j=i-1; j    {
        a[j] = a[j+k];
    }
}

int main()
{
    int a[100], i, n, k;

    printf("please enter numbers:\n");
    i=0;
    while(scanf("%d", &a[i])==1)
    {
        i++;
    }
    n = i;///n表示一共有多少个元素
    printf("please enter i and k:");
    while(1)///判断删除的元素是否在数组内
    {
        scanf("%d %d", &i, &k);
        if(i+k-1         else printf("your enter is wrong, please enter again\n");
    }
    delet(a, n, i, k);
    for(i=0; i    {
        printf("%d  ", a[i]);
    }
}

回答4:

bool delete( array,int i,int j)
{
if(i+j > array.Length)
return false;
for(int k=i+j-1;karray[k-1]=array[k];//i+k及其后面的元素前移。
array.Length--;
return true;
}