例如如果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;
}