C 程序:删除顺序表指定下标元素

问题:删除顺序表L中下标为p(0<p<length-1)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e

#define MAXSIZE 100
typedef int DataType_t;

typedef struct {
    DataType_t data[MAXSIZE]; // 顺序表存储空间
    int length;               // 当前长度
} SeqList_t;

int SeqList_Delete(SeqList_t *L, int p, DataType_t *e)
{
    // 检查位置合法性
    if (L == NULL || p <= 0 || p >= L->length - 1)
        return 0;

    // 备份要删除的值
    *e = L->data[p];

    // 元素前移
    for (int i = p; i < L->length - 1; ++i) {
        L->data[i] = L->data[i + 1];
    }

    // 更新长度
    L->length--;

    return 1;
}

int main() {
    SeqList_t L = {{10, 20, 30, 40, 50}, 5};
    DataType_t val;
    int p = 2;

    if (SeqList_Delete(&L, p, &val)) {
        printf("删除成功,删除的值是:%d\n", val);
        printf("删除后顺序表:");
        for (int i = 0; i < L.length; ++i) {
            printf("%d ", L.data[i]);
        }
    } else {
        printf("删除失败\n");
    }

    return 0;
}

posted @ 2025-07-18 09:18  Aino_D  阅读(9)  评论(0)    收藏  举报