已知一个顺序表L中存储的数据类型是字符,设计一个算法能够删除L中的某个字符

例如如果L中存储数据是:abcdbe,假设要删除的字符为b,那么所设计的算法可以将L中的b删除,最终L中的数据变为:acde
要求:使用C语言先给出L的数据类型定义、然后设计算法、最后分析所设计算法的时间和空间复杂度。/有没有大神教我一下

找到字符所在位置,将其后字符全部向前移动一位。最后将顺序表长度减去1

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

供参考:

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
#define ERROR 0
#define OK 1
typedef char ElemType;
typedef int  status;
typedef struct {
    ElemType* elem;
    int length;
} SqList;

status InitList(SqList& L) {
    L.elem = new ElemType [MAXSIZE];
    if (!L.elem)
        return ERROR;
    L.length = 0;
    return OK;
}

status Create(SqList& L) {
    int i, n = 6;
    char s[6] = { 'a','b','c','d','b','e' };
    //printf("输入元素个数:");
    //scanf("%d", &n);
    L.length = n;
    printf("输入元素:");
    for (i = 0; i < n; i++)
        L.elem[i] = s[i];
        //scanf(" %c", &L.elem[i]);
    return OK;
}

void Deletex(SqList& L,ElemType e)
{
    int i, k;
    for (i = 0; i < L.length; i++) {
        if (L.elem[i] == e)
        {
            for (k = i; k < L.length - 1; k++) {
                L.elem[k] = L.elem[k + 1];
            }
            L.length--;
            i--;
        }
    }
}

void ListOutput(SqList L) //输出List
{
    int i;
    for (i = 0; i < L.length; i++)
        printf("%c ", L.elem[i]);
    printf("\n");
    return;
}

int main() {
    SqList L;
    InitList(L);

    Create(L);
    ListOutput(L);

    printf("删除元素:");
    Deletex(L, 'b');
    ListOutput(L);
    return 0;
}