| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 862 人关注过本帖
标题:[求助]线性表的插入问题
取消只看楼主 加入收藏
静源
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-8-25
收藏
 问题点数:0 回复次数:1 
[求助]线性表的插入问题
在顺序表中删除第 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
静源
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.016666 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved