说我们有

typedef struct {
  int value1;
  int value2;
} values_t;




values_t* values;


用值对[i] .value1和值[i] .value2对填充,它们可能是唯一的,也可能不是唯一的。

我们要填补

values_t* values_unique;


仅具有来自值的唯一对,并按它们首次出现在值中的顺序。

用C做到这一点的理想方法是什么?

编辑:假设它们是正确分配的指针;以上只是伪代码。

最佳答案

您可能会使用值的哈希值,维护哈希表和相应值的列表,如果未找到,则仅将新对添加到values_unique数组(问题最初并未声明为数组)通过哈希。如果列表很大,从散列而不是顺序搜索整个列表的速度可能会非常重要。

关于c - 在C中制作唯一值列表的理想方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3571033/

10-16 23:04