public class SeqList implements List
{
//======忽略部分代码段==========
public void insert(int i,Object obj)thorws Exception
{
if(size==maxsize)
{
thorw new Exception("列表以满,无法插入");
}
if(i<0||i>size)
{
throw new Exception("参数错误!");
}
for(int j=size;j>i;j--)
{
listArray[j]=listArray[j-1];//第一句
listArray[i]=obj;
size ++; //第二句
}
}
}
就这2句看不明白。
问题出自:数据结构里的顺序表
问题一:每循环一次 size就自加一次, 复值j=size。然后j--,不是矛盾了吗?
问题二:数组listArray[j]下标是如何向后移动的?
{
//======忽略部分代码段==========
public void insert(int i,Object obj)thorws Exception
{
if(size==maxsize)
{
thorw new Exception("列表以满,无法插入");
}
if(i<0||i>size)
{
throw new Exception("参数错误!");
}
for(int j=size;j>i;j--)
{
listArray[j]=listArray[j-1];//第一句
listArray[i]=obj;
size ++; //第二句
}
}
}
就这2句看不明白。
问题出自:数据结构里的顺序表
问题一:每循环一次 size就自加一次, 复值j=size。然后j--,不是矛盾了吗?
问题二:数组listArray[j]下标是如何向后移动的?
{
listArray[j]=listArray[j-1];//第一句
listArray[i]=obj;
size ++; //第二句
}
size++ 对于 j 的初试值没有影响. j的初试值 取决于 size 的初始值...
这个问题数据变量的作用域问题把.. 莫有这样写过代码..
{
listArray[j]=listArray[j-1];//第一句
listArray[i]=obj;
size ++;//第二句
}
====================================
错了,应该为:
for(int j=size;j>i;j--)
{
listArray[j]=listArray[j-1];//第一句
}
listArray[i]=obj;
size ++;//第二句
你仔细看看,明显你的语句里面是不对的。for循环的块的范围错了!!