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]下标是如何向后移动的?

解决方案 »

  1.   

    for(int j=size;j>i;j--)
              {
                 listArray[j]=listArray[j-1];//第一句
                 listArray[i]=obj;
                 size ++; //第二句
              }
    size++ 对于  j 的初试值没有影响. j的初试值 取决于 size 的初始值...
    这个问题数据变量的作用域问题把.. 莫有这样写过代码..
      

  2.   

    是循环完了以后 size 才自加吗?但是...想不通
      

  3.   

    for(int j=size;j>i;j--)
              {
                 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循环的块的范围错了!!