对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,删除线性表中所有值为x的数据元素
bool delList(int* arr, int len, int x) {
int k = 0;//用于记录我们要删除多少个数据,我们下一个位置就跳多少格子
for (int i = 0; i < len; i++)
{
if (*(arr+i)==x)
{
k++;
}
else
{
*(arr + i - k) = *(arr + i);
}
if (k > 0)
{
*(arr + i) = NULL;
}
}
return true;
}
int main() {
int arr[] = {1,2,2,4,5,2,4,7,2};
int len = sizeof(arr) / sizeof(int);
delList(arr, len, 2);
int i = 0;
while (*(arr+i))
{
printf("%d", *(arr + i));
i++;
}
return 0;
}
王道408c语言实现3
最新推荐文章于 2024-07-08 22:12:26 发布