用C语言请设计一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可以删除顺序表内所有值为item的元素 点击复制后,将打开C知道体验页 可
时间: 2023-06-12 22:06:11 浏览: 90
用C语言举例讲解数据结构中的算法复杂度结与顺序表
以下是实现代码:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
/**
* 删除顺序表中所有指定元素
* @param L 顺序表
* @param item 待删除元素
* @return 成功删除的元素个数
*/
int removeElem(SqList *L, int item) {
int i, j;
for (i = 0, j = 0; i < L->length; i++) {
if (L->data[i] != item) {
L->data[j++] = L->data[i];
}
}
int count = L->length - j;
L->length = j;
return count;
}
int main() {
SqList L = {{1, 2, 3, 4, 1, 5, 6, 1, 7}, 9};
int count = removeElem(&L, 1);
printf("成功删除%d个元素,删除后的顺序表为:\n", count);
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
return 0;
}
```
该算法的时间复杂度为 O(n),空间复杂度为 O(1)。
阅读全文