Data-Structres icon indicating copy to clipboard operation
Data-Structres copied to clipboard

关于数组存储的线性表的删除

Open mayali123 opened this issue 5 years ago • 0 comments

void Delete(int i,List L){
    int j;
    if(i < 0 || L->Last <i){  //位置越界,而删除最多到 L->Data[L->Last]
        printf("L->Data[%d]不存在元素",i);
        return;
    }
    for(j=i;j<=L->Last;j++)   // 从前往后依次向前挪一个,将 a[i] 覆盖了 
        L->Data[j-1] = L->Data[j];
    L->Last--;  // Last仍然指向最后元素
    return;
}

你这 传入的 i 是 下表,所以

for(j=i;j<=L->Last;j++)   // 从前往后依次向前挪一个,将 a[i] 覆盖了 
        L->Data[j-1] = L->Data[j];

应该改成

for(j=i+1;j<=L->Last;j++)   // 从前往后依次向前挪一个,将 a[i] 覆盖了 
        L->Data[j-1] = L->Data[j];

mayali123 avatar Dec 28 '20 12:12 mayali123