C语言编写线性表中有个for循环没有进行,请问错在哪了 5

intLocate(SeqList*L,ElemTypee){inti=0;/*i为扫描计数器,初值为0,即从第一个元素开始比较*/while((i<=L->last)&... int Locate(SeqList *L, ElemType e)
{
int i=0; /*i为扫描计数器,初值为0,即从第一个元素开始比较*/
while ((i<=L->last)&&(L->elem[i]!=e)) /*顺序扫描表,直到找到值为key的元素, 或扫描到表尾而没找到*/
i++;
if (i<=L->last)
return(i+1); /*若找到值为e的元素,则返回其序号*/
else
return(-1); /*若没找到,则返回空序号*/
}
int InsList(SeqList *L,int i,ElemType e)
{
int k;
if((i<1) || (i>L->last+2)) /*首先判断插入位置是否合法*/
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L->last>= MAXSIZE-1)
{
printf("表已满无法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--) /*为插入元素而移动位置*/
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e; /*在C语言数组中,第i个元素的下标为i-1*/
L->last++;
return(OK);
}
int DelList(SeqList *L,int i,ElemType *e)
/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1 */
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法!");
return(ERROR);
}
*e = L->elem[i-1]; /* 将删除的元素存放到e所指向的变量中*/
for(k=i; i<=L->last; k++)
L->elem[k-1] = L->elem[k]; /*将后面的元素依次前移*/
L->last--;
return(OK);
}
void main()
{
SeqList *l;
int p,q,r,b,c,d,*f,sum=0,m;
int i;
l=(SeqList*)malloc(sizeof(SeqList));
f = (int*)malloc(sizeof(int));
printf("请输入线性表的长度:");
scanf("%d",&r);
l->last = r-1;
printf("请输入线性表的各元素值:\n");
for(i=0; i<=l->last; i++)
{
scanf("%d",&l->elem[i]);
}
printf("请输入要查找的元素值:\n");
scanf("%d",&q);
p=Locate(l,q);
if(p == -1)
printf("在此线性表中没有该元素!\n");
else
printf("该元素在线性表中的位置为:%d\n",p);
printf("请输入要插入的位置:\n");
scanf("%d",&b);
printf("请输入要插入的元素值:\n");
scanf("%d",&c);
InsList(l,b,c);
for(i=0; i<=l->last; i++)
{
printf("%d ",l->elem[i]);
}
printf("\n");
printf("请输入要删除的元素位置:\n");
scanf("%d",&d);
DelList(l,d,f);
printf("删除的元素值为:%d\n",*f);
for(i=0;i<=l->last;i++)
{
m=l->elem[i];
sum+=m;
}
printf("所有元素值之和:%d\n",sum);
}

源代码可以运行,就是最后一个求所有元素之和的for循环没有运行,然后结果就是给sum定义的初始值0,为什么会这样?请问该怎么修改?
展开
 我来答
albumin
2015-09-16 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2393万
展开全部
int DelList(SeqList *L,int i,ElemType *e)
/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1 */
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法!");
return(ERROR);
}
*e = L->elem[i-1]; /* 将删除的元素存放到e所指向的变量中*/
for(k=i; k<=L->last; k++) /*错误在此,此处应为k<=L->last,你的程序写为i<=L->last*/
L->elem[k-1] = L->elem[k]; /*将后面的元素依次前移*/
L->last--;
return(OK);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式