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

 我来答
唯追爱
2011-09-08
知道答主
回答量:34
采纳率:0%
帮助的人:17.4万
展开全部
#include <stdio.h>
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<j)
a[i]=a[i+k];
}
fun函数的作用就是删除k个数,999,666,66是我随便定的数,你可以改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dotawow007
2011-09-08
知道答主
回答量:18
采纳率:0%
帮助的人:5.8万
展开全部
int list[]=new int[n];
for(int x=i;x<(i+k);x++)
list[x]=NULL;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
前端小茶馆
推荐于2017-09-21 · TA获得超过962个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:346万
展开全部

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

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

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

///函数delet 参数的含义:删除的是数组a中的元素,数组a一共有n个元素
///删除数组a中从i开始的k个元素
void delet(int *a, int n, int i, int k)
{
    int j;
    for(j=i-1; j<n-k; 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 <n) break;
        else printf("your enter is wrong, please enter again\n");
    }
    delet(a, n, i, k);
    for(i=0; i<n-k; i++)
    {
        printf("%d  ", a[i]);
    }
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庄依春
2011-09-08 · TA获得超过182个赞
知道小有建树答主
回答量:469
采纳率:0%
帮助的人:311万
展开全部
bool delete( array,int i,int j)
{
if(i+j > array.Length)
return false;
for(int k=i+j-1;k<array.Length-1;k++)
array[k-1]=array[k];//i+k及其后面的元素前移。
array.Length--;
return true;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式