数据结构导论 顺序表的插入 的问题
数据结构导论 顺序表的插入
课文例题:
void insert(sqlist L,datatype x,int i)
{
if (L.last==maxsize) error('表满');
if ((i <1)||(i>L.last+1)) error('非法位置')
for(j=L.last;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=x;
L.last=L.last+1
}
1。不明白的地方for(j=L.last;j>=i;j--) 中的j>=i; 为什么不是j>=i-1
顺序表是从下标0开始,所以我要觉得插入位置应该是j>=i-1
另外L.data[j]=L.data[j-1]为什么不是L.data[j]=L.data[j+1];
因为l.last指向数组最后一个,而要向后移应该是最后一个+1个
===============================================================
整个修改后我觉得应该是如下
void insert(sqlist L,datatype x,int i)
{
if (L.last==maxsize) error('表满');
if ((i <1)||(i>L.last+1)) error('非法位置')
i=i-1;
for(j=L.last;j>=i;j--)
L.data[j+1]=L.data[j];
L.data[i]=x;
L.last=L.last+1
}