C - 在不使用 int 的情况下移动数组的更快方法

标签 c arrays sorting

作为我的作业,我正在编写一个程序,该程序应该使用 bool 函数检查 char 数组并删除数组中返回 true 的所有字符。问题是我不允许使用索引(也不允许任何类型的 int 和库)。我写了一个代码来移动我的数组,但它太慢了。 如果有人能指出我更快的方法,我将不胜感激。

bool filter(char* array, bool(*function)(char))
{
    if(array)
    {
        char *start = array;
        while(*(array) != 0)
        {
            if(function(*array) == false)
            {
                start++;
                array++;
            }
            else
            {
                while(*(array) != 0)
                {
                    *(array) = *(array + 1);
                    array++;
                }
                *(array) = 0;
                tablica = start;
            }
        }
    }
}

期待您的回复。

最佳答案

您不需要每次删除一个字符时都重新移位整个数组。在进行复制时,只需记录当前的往返位置即可。只要不可能将元素添加回数组,就不会覆盖任何内容:

bool filter(char* array, bool(*function)(char)){
    if(array){
        char *start = array;
        while(*(array) != 0){
            if(function(*array) == false){
                *start = *array;
                start++;
            }
            array++
        }
        *start = '\0';
    }
    return true;
}

关于C - 在不使用 int 的情况下移动数组的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20412342/

相关文章:

C - 动态数组中的排序不适用于特定数量的值

arrays - MongoDB:排序数组

c - Go中的地址对齐

c++ - 无法在从 C++ 类继承的结构上调用正确的构造函数

javascript - 在同一行 javascript 中提醒 2 个数组

java - JTable 排序 - 选择一行

c - 错误 : expected ';' , ',' 或 ')' token 之前的 '&'|在网上找到的一个简单的 C 程序

c - 32 位系统中的 64 位变量读取顺序(低位和高位)

arrays - 如何使用 jq 将 JSON 文件分解为包裹在数组中的较小 json?

python - 如何在Python中通过将值与另一个数组进行比较来从一个数组返回值?