2

在 Hashtable 中检测循环。考虑给您一组键值对,这些键值对存储在 Hashtable 中。一个值也可能是一个键。如果所有这些键值对都存储在 Hashtable 中并给定一个键,我们应该能够检测到一个键的适当值。价值将是循环的入口点。示例:(键值对)

A->B
B->c
c->D
D->E
E->c

因此,当要求与键 A 对应的值应返回 C 时,D 的值应返回 D。

我是通过以下方式做到的,但我认为可以有更好的解决方案:

int count = 0;
char *keys[50];
getValue(char *key, bool for_cycle){
save_keys_cycle[count] = key;
if(for_cycle){  
    int i=0;

    for(i = 0; i<count;i++ ){
        if(strcmp(key, save_keys_cycle[i])==0){                             
            count = 0;
            return key;         
        }       
    }       

}
count++;
char *value = lookup(hashtable, key);
if(value != null){
    char *value = lookup(hashtable, value);
    if(value != null){
        getValue(value, true);
    }
}else{
    count = 0;
    return value;
}

}

要提取一个值,调用将是

char *value = getValue(key, false);  // I am using a global hashtable.

这很好用,但我想为 char[] 使用动态大小,而不仅仅是 50。如果我能找到更好的方法,那将是不言而喻的。

4

0 回答 0