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。重複は隣同士になります。

配列全体を線形スイープし、現在のアイテムの後に同じ姓を持つエントリがいくつあるかを確認します。これらすべての重複に対して、カウンターを 1 つ増やします。読み取りヘッドを最初の個別のエントリに増やします。

size n:操作の配列の場合、並べ替えルーチンO(n lg n) + O(n) = O(n lg n)を想定しています。O(n lg n)

于 2009-11-22T23:33:08.053 に答える
0

複数のアイテムを反復処理する場合、これらのアイテムが配列にあると、はるかに簡単になります。struct配列に項目を含めるように定義を再定義することを検討していただけますか? enumおそらく、または一連のを使用して配列にインデックスを付けることができます#define

データを適切に配列に入れることができない場合、値を構造体の各項目と一度に 1 つずつ比較するような解決策になる可能性があります。

于 2009-11-22T23:33:52.407 に答える