0

我有一个包含大量字符串元素的结构成员。我想要的是迭代结构的整个成员并只计算不同的元素(不同的姓氏)。

struct log {
    char *last;
};
...
struct log *l
l->last = last_name; // loading *last member with data coming from last_name var
...

比较和计算*last 上当前唯一元素的好方法是什么?

任何帮助将不胜感激。

4

2 回答 2

1

last_name根据键对数组进行排序。重复项将彼此相邻。

对数组进行线性扫描,检查当前项之后有多少条目具有相同的姓氏。为所有这些重复项增加一次计数器。将您的阅读头增加到第一个不同的条目。

n对于大小为:的数组O(n lg n) + O(n) = O(n lg n),假设有一个O(n lg n)排序例程。

于 2009-11-22T23:33:08.053 回答
0

如果你想迭代多个项目,如果这些项目在一个数组中,那就容易多了。您是否可以考虑重新定义您的struct定义以将项目包含在数组中?您也许可以使用一个enum甚至一系列#defines 来索引数组。

如果您的数据无法明智地进入数组,您最终可能会得到一个解决方案,该解决方案看起来像是一次将值与结构中的每个项目进行比较。

于 2009-11-22T23:33:52.407 回答