Алгоритм отображения в C - PullRequest
1 голос
/ 17 ноября 2011

Scala может сделать отображение (ADT), поэтому мы можем отображать как это ('A', 3) = (Char, Int)

как насчет C?

Я хочу отобразить и проверить все отношения и сравнение между двумя картами

'a' = 1, 'b' = 3, 'c' = 4 отображается как abbbcccc

и 'e' = 1, 'b' = 3, 'g' = 4 отображается bbbegggg

Я хочу найти эти отношения ('a', 1) не в ('e' = 1, 'b' = 3, 'g' = 4). тогда эта карта ('b' = 3) находится в ('e' = 1, 'b' = 3, 'g' = 4) этой карты. и считать ++;

Как я могу сделать такие карты? я могу сделать это по массиву?

1 Ответ

4 голосов
/ 17 ноября 2011

Не в простой C, нет.

Вы можете реализовать один с массивом или двумя, но вам придется реализовать либо алгоритм хеширования, либо какой-либо алгоритм сравнения и поиска. В качестве альтернативы вы можете использовать какое-то дерево поиска для его реализации.

Если вы не хотите писать тип данных карты, вам придется использовать библиотеку с этой функциональностью. GLib содержит одно: http://developer.gnome.org/glib/2.30/glib-Hash-Tables.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...