中易网

从顺序存储结构的线性表a中删除第i个元素起的k个元素。为什么我的代码有问题?参数传递有问题,不要用引用

答案:2  悬赏:80  
解决时间 2021-02-22 10:16
#include<stdio.h> #include<malloc.h> typedef struct{ int elem[20]; int length; }SqList; int DeleteK(SqList a,int i,int k) { //从顺序存储结构的线性表a中删除第i个元素起的k个元素 //注意i的编号从0开始 int j; if(i<0||i>a->length-1||k<0||k>a->length-i) return 0; for(j=0;j<=k;j++) a->elem[j+i]=a->elem[j+i+k]; a->length=a->length-k; return 1; }
#include<stdio.h>
#include<malloc.h>
typedef struct{
int elem[20];
int length;
}SqList;
int DeleteK(SqList a,int i,int k)
{
//从顺序存储结构的线性表a中删除第i个元素起的k个元素
//注意i的编号从0开始
int j;
if(i<0||i>a->length-1||k<0||k>a->length-i) return 0;
for(j=0;j<=k;j++)
a->elem[j+i]=a->elem[j+i+k];
a->length=a->length-k;
return 1;
}
int main()
{
SqList p;
int m;
for(m=0;m<20;++m)
p->elem[m]=m;
p->length=20;
DeleteK(p,3,4);
for(m=0;m<p->length;++m)
printf("%d",p->elem[m]);
return 0;
}
最佳答案
你的代码有问题
SqLIst a定义的不是指针
a->length不能这么用 你把所有的->都替换成点 例如a->length 换成 a.length
DeleteK这个函数貌似有问题
我自己写了个
int DeleteK(SqList &a, int i, int k)
{
//从顺序存储结构的线性表a中删除第i个元素起的k个元素
//注意i的编号从0开始
int j,l;
if (i < 0 || i > a.length - 1 || k < 0 || k > a.length - i) return 0;
for(j=0;j<k;j++)
{
for (l=i;l<a.length-1;l++)
{
a.elem[l]=a.elem[l+1];
}
a.length--;
}
return 1;
}
全部回答
你好! a->elem[j+i]=a->elem[j+i+k]; 这句,a->elem[j+i+k]; 到最后很可能溢出,超过你数组的范围就会报错,这样写不对,应该把后面的所有值一一移动到前面的空缺处 希望对你有所帮助,望采纳。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
深圳金光华广场附近哪里停车比较便宜?详细说
妈咪包,母婴包什么牌子的好
淄博哪里有DIY杯子制作店 我想带图片带杯子然
凡美美容美体会所在什么地方啊,我要过去处理
有什么免费的屏幕录像软件
昨天早上十点在淘宝下的单,现在还没发货 昨
时尚丽人精品女装怎么去啊,有知道地址的么
佳能70/200镜头不聚焦,拉锯现象严重
正品沃森薰衣草小熊的填充物是什么
铁锤锤鸡蛋垂不碎
发源地专业染烫店地址在哪,我要去那里办事
自己已经没有能力去抚养残疾孩子(智障)了,
罗汉洞在哪里啊,我有事要去这个地方
请问秦皇岛哪里有正规的佛门道场?
有一个女的唱的粤语歌,高潮部分的歌词是:…
推荐资讯
买房子10楼好吗
兴安物流有限公司我想知道这个在什么地方
温州中西医结合医院是公立还是私立医院,公和
天津新业广场有什么美食?
static random rand=new Random();
请问热电厂供热参数:压力为4.3MPA,温度为45
哪里有卫生间马桶移位的驳接管配件买、就是将
禹州市农机有限公司地址在什么地方,想过去办
餐饮管理人员是否需要办理健康证
猩红热什么阶段有传染性
租房合同需要盖章吗
荣信二手车行在哪里啊,我有事要去这个地方
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?