今天上课学到这样一个顺序表
在顺序表L中的i处插入一个e
for (int j=L.length-1;j>=i;j--)
L.data[j+1]=L.data[j]
此处的L.length-1是否有问题?
在下面后移时第一步就将第j-2移到了j-1,事实上第一步应该是将j-1移动到j吧?
没有问题,完全正确。这个循环结束后,需要L.Length++;
在下面后移时第一步就将第j-2移到了j-1------这个你是怎么观察出来的呢?L.data[j+1]=L.data[j] 这明明是将L.length-1向后移动到L.length位置啊
把j-2移动到j-1,代码在哪呢
明明是将j移动到j+1呀
也就是将L.length-1移动到L.length的位置
如果数组一开始没有余量,此时已经越界了,但是设计的时候就留了余量,所以此时移到了之前没有用的位置上
-=-=-=-=-
j本身只是一个变量,它的取值范围要看你到底让它指代谁
如果j是从L.length开始循环的,那么后续所有的索引都必须-1,否则都越界了
如果j是从L.length-2开始的,那么所有的都要+1
你抛开了j从哪里取值不看,只看j应该如何赋值,那是没有任何意义的