本帖最后由 yuweb 于 2019-9-27 09:23 编辑 Status ListDelete(SqList *L, int i, ElemType *e)
{
int k;
if( L->length == MINSIZE ) //顺序线性表为空表
{
return ERROR;
}
if( i<1 || i>L->length ) //这边的L-length应该是L->length
{
return ERROR;
}
if( i<L->length ) //这边的L-length应该是L->length
{
/*将要删除位置后数据向前移动一位*/
for( k=i-1; k<=L->length-1; k++)//这边的L-length应该是L->length
{
L->data[k] = L->data[k+1];
}
}
*e=L->data[i-1]; // 将元素删除
L->length--;
return OK;
}
顺序线性表的删除过程是先将表中第i+1个元素到第n个元素依次向前移动一个单位长度,然后将线性表的长度减一
顺序线性表表是用一组地址连续的存储单元依次存储线性表的数据元素,类似于数组,可以用下标访问到特定位置的元素,声明差不多是下面这样吧(存储空间基址就是类似数组的首地址)typedef struct{
ElemType *elem; //存储空间基址
int length; //当前长度
}SqList;
楼主的逻辑没什么问题,就是代码中的小错误而已 |