验证表中是否存在元素

时间:2014-05-22 17:37:45

标签: c algorithm

我是C算法的新手并且请求一些帮助。

我希望检查表中是否存在元素,有人能给我一些好的算法吗?我做的是循环和标志,然后退出循环并验证标志。但它看起来很愚蠢,所以我想会有更高效的算法。我的代码如下:

int j=0;
u8_t next_header[]={0x11, 0x22}; 
for(i = 0; i < sizeof(next_header); ++i)
{       
    if (buf[6] != next_header[i])
        continue;
    else
        ++j;            
}
if(j == 0)
{
// execution    
}
else
{
// execution
}

2 个答案:

答案 0 :(得分:3)

将它打包在一个函数中,这样你就可以在找到元素后立即跳回循环:

int search_for_elements(int element)
{
    int i;
    u8_t next_header[]={0x11, 0x22}; 
    for(i = 0; i < sizeof(next_header); ++i)
    {       
        if (element == next_header[i])
            return 1; // found the element;
    }
    return 0; // :( no element found
}

答案 1 :(得分:0)

是的,如果你的表是一个简单的数组循环是要走的路。也就是说,通常的模式是使用break语句而不是continue。

int found = 0;
for(i=0=; i<the_array_length; i++){
    if(array[i] == the_element_i_am_searching){
        found = 1;
        break;
    }
}

此外,使用if(i)而不是if(i != 0)来测试布尔值更具惯用性。 (也就是说,如果你的变量是一个并不总是0或1的数字,就像你的j一样,为了清晰起见,我会保持明确的比较)