帮我解释一下

void insert(SeqList sl,int x,int i){
int j; //用于循环后移
if((sl.len+1)>MAXNUM)
printf(“OVERFLOW!”);
else if(i<1||i>sl.len+1)
printf(“the insert-position is wrong!”);
else
{ for(j=sl.len-1;j>=i-1;j--)
sl.a[j+1]=sl.a[j];
sl.a[i-1]=x;
sl.len=sl.len+1;
}
}

帮我解释一下
{ for(j=sl.len-1;j>=i-1;j--)
sl.a[j+1]=sl.a[j];
sl.a[i-1]=x;
sl.len=sl.len+1;
}
答完就给,还是不明白

这个很简单的!应该是顺序表的插入吧!
下面我一句一句的解释:
{
for(j=sl.len-1;j>=i-1;j--)
//条件(先是把j指向数组sl的最后一个元素,然后依次递减一直减到插入元素处的位置,这样循环主要是为了把第i个元素以后的元素全部往后面移动一位)

sl.a[j+1]=sl.a[j];

//这一句就是把第i个元素后面的全部往后面移动了,很简单吧

sl.a[i-1]=x;
//这一句就是把参数传进来,也就是说把你想插入的数放在第i个位置,这样实现了数的插入

sl.len=sl.len+1;
// 这个功能也很简单,在结构体中你定义了一个len的元素,他就是直接知道你的结构体元素当前个数.当你插入一个元素时候,长度当然要加1啦

呵呵....不知道这样解释合理不.我也是一个刚刚进大2的学生,刚刚接触到数据结构的课程,如果我的解释不合理,那是我的技术不过关,你不要怪我哈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-09-22
给点奖励分嘛
相似回答