日期:2014-05-20  浏览次数:20675 次

顺序表读程序的简单问题
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]下标是如何向后移动的?


------解决方案--------------------
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循环的块的范围错了!!