用c++语言来实现。设计一个是时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可删除线性表中所有为item的数据元素。已知长度为n的线性表A采用顺序存储结构。
时间: 2024-05-27 19:14:56 浏览: 51
思路:使用两个指针,一个指针指向当前需要判断的元素,另一个指针指向当前需要存储的位置。若当前元素不为item,则将其存储到当前位置,并将当前位置指针向后移动一位。最后将线性表的长度更新为当前位置指针的值。
代码实现:
void delete_item(int A[], int n, int item) {
int i, j = 0;
for (i = 0; i < n; i++) {
if (A[i] != item) {
A[j] = A[i];
j++;
}
}
n = j;
}
相关问题
对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素用c++实现
void deleteX(SqList &L, ElemType x) {
int k = 0; // 记录非x元素的个数
for (int i = 0; i < L.length; i++) {
if (L.data[i] != x) {
L.data[k] = L.data[i];
k++;
}
}
L.length = k; // 更新表长
}
对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素,用C++实现
void deleteX(SqList &L, ElemType x) {
int k = 0; // 用k记录非x元素的个数
for (int i = 0; i < L.length; i++) {
if (L.data[i] != x) {
L.data[k] = L.data[i];
k++;
}
}
L.length = k;
}
阅读全文