| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 856 人关注过本帖
标题:[求助]线性表的插入问题
只看楼主 加入收藏
静源
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-8-25
收藏
 问题点数:0 回复次数:4 
[求助]线性表的插入问题
在顺序表中删除第 i个数据元素。

int SqDelete(SqList *L,int i,elemtype *p)
{
int j,n;
n=(*L).len;
if(i<1||i>n)
{printf("Error!"); return(0);}
(*p)=(*L).elem[i-1];
for(j=i-1;j<n-1;j++)
(*L).elem[j]=(*L).elem[j+1];
(*L).len--;
return(1);
}
各位大侠,第7行中要删除第i个元素,但是用下标表示是(*L).elem[i-1]。因为第 i个元素被删除了,所以第i+1个元素到第n个元素依次向前移一个位置。
但是第8行中,(i-1)是指的是下标下的(i-i)还是原来的什么,为什么是j=i-1.这一点我不明白。还请大伙给个答案。谢谢了。
搜索更多相关主题的帖子: 线性 
2007-10-23 22:15
andself
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-9-23
收藏
得分:0 
“为什么是j=i-1”
我想可能是因为 i 是传过来的变量 j是根据 i 变化的吧
i-1 可能指的是 新的位置吧
毕竟不是链表 指向地址不是固定的吧

我也是刚学 说的不好 也许不对 包涵啊

2007-10-23 22:32
liweiqing
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2007-10-16
收藏
得分:0 
第i个元素的下标不就是i-1吗!!!

岂能尽如人意,但求无愧于心.
2007-10-23 23:31
cobby
Rank: 1
等 级:新手上路
威 望:1
帖 子:565
专家分:0
注 册:2007-7-11
收藏
得分:0 
因为操作时有个j+1,如果从i开始的话就会越界;
如果一定要从i开始的话,那么就用j-1了

努力成为菜鸟!
2007-10-24 11:25
静源
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-8-25
收藏
得分:0 
哦,我明白了,

for(j=i-1;j<n-1;j++)主要是为了下面的(*L).elem[j]=(*L).elem[j+1];服务的,元素的下标位置和自然情况的的位置总是小一,下标是从0开始的,r(j=i-1;j<n-1;j++)是为了下边的(*L).elem[j]=(*L).elem[j+1];不变,其实,也可以变化一下,for(j=i;j<n;j++);(*L).elem[j-1]=(*L).elem[j];
再次感谢2楼,3楼和4楼的兄弟们。
2007-10-24 11:37
快速回复:[求助]线性表的插入问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018516 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved