数据结构问题 本人菜鸟 忘高手解答
顺序表的插入
Status ListInsert_Sq(SqList &L,int i,ElmeType e){
if (i<1||i>L.length+1) return ERROR;
if (L.length==MAXSIZE) return ERROR;
for (j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elme[j];
L.elme[i-1]=e;
++L.length;
return OK;}
书上的算法 为什么for (j=L.length-1;j>=i-1;j--)这句 j=L.length-1呢,怎么想都觉得是j=L.length 啊。。。。。
[解决办法]
L.elme[L.length-1]就是最后一个元素, L.elme[0]是第一个元素
0...L.length-1 一共就是L.length个
[解决办法]
elme[]数组中的下标总比length少1
[解决办法]
意义在于一个个的向后推,L.elem[j+1]=L.elme[j];
elme是从elme[0]开始存储的
L.elme[L.length-1]就是最后的一个元素了
elme若是从elme[1]开始存储的
L.elme[L.length]就是最后的一个元素了
[解决办法]
for (j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elme[j];
L.elme[i-1]=e;
//在第i-1个元素和第i个元素之间插入