小甲鱼老师的第八讲 线性表3的代码
那个eleminsert的代码里的 for( k=L->length-1; k >= i-1; k-- ){
L->data = L->data;
}
k=L->length-1里是不是多减了个1啊,斗胆问问?/* 初始条件:顺序线性表L已存在,1<=i<=ListLength(L)。 */
/* 操作结果:在L中第i个位置之前插入新的数据元素e,L长度+1。*/
Status ListInsert(SqList *L, int i, ElemType e)
{
int k;
if( L->length == MAXSIZE )// 顺序线性表已经满了
{
return ERROR;
}
if( i<1 || i>L->length+1) // 当i不在范围内时
{
return ERROR;
}
if( i <= L->length ) // 若插入数据位置不在表尾
{
/* 将要插入位置后数据元素向后移动一位 */
for( k=L->length-1; k >= i-1; k-- )
{
L->data = L->data;
}
}
L->data = e;// 将新元素插入
L->length++;
return OK;
}
没有多,因为数组是从0开始的,数组的第一个是data ,最后一个是data He2toN 发表于 2013-7-19 11:49 static/image/common/back.gif
没有多,因为数组是从0开始的,数组的第一个是data ,最后一个是data
额,好好看了看,明白了,真正存储数据的数组 下标应噶是 从0到length的,不是length-1的,小甲鱼代码是对的,哥们你再看看。。。。 我怎么感觉小甲鱼写错了。这样的话长度就不是length了 而是length+1了{:5_99:} 正确的代码是不是应该这样??
/* 初始条件:顺序线性表L已存在,1<=i<=ListLength(L)。 */
/* 操作结果:在L中第i个位置之前插入新的数据元素e,L长度+1。*/
Status ListInsert(SqList *L, int i, ElemType e)
{
int k;
if( L->length == MAXSIZE )// 顺序线性表已经满了
{
return ERROR;
}
if( i<1 || i>L->length) // 当i不在范围内时 ///////-------这里修改
{
return ERROR;
}
if( i < L->length ) // 若插入数据位置不在表尾 //////////-------这里也修改
{
/* 将要插入位置后数据元素向后移动一位 */
for( k=L->length-1; k >= i-1; k-- )
{
L->data = L->data;
}
}
L->data = e;// 将新元素插入
L->length++;
return OK;
} 像老师学习 {:10_266:}感觉代码有问题
我也记得小甲鱼好像说过 链表线性表都是从1开始的,不从0开始?
页:
[1]