Я хочу реализовать набор в C. Можно ли использовать связанный список при создании SET или использовать другой подход?Как реализовать набор?
Как вы обычно реализуете ваш собственный набор (при необходимости).
ПРИМЕЧАНИЕ: Если я использую Linked подход List, я, вероятно, имеют следующие сложности для набора моих операций:
- INIT: O (1);
- уничтожить: O (n);
- Вставка: O (n);
- удалить: O (n);
- объединение: O (n * m);
- пересечение: O (n * m);
- разница: O (n * m);
- Участник: O (n);
- issubset: O (n * m);
- setisequal: O (n * m);
O (n * m) кажется, может быть немного большим, особенно для огромных данных ... Есть ли способ реализовать мой набор более эффективным?
Не зная, чего вы хотите достичь, это трудно помочь. Если вы просто хотите иметь такой массив, как структура, то Vector, вероятно, ваш путь.Я предположил, что вы на самом деле используете C++. STL имеет множество вещей, которые обязательно помогут вам. – thecoshman
C++ реализует свой заданный класс как сбалансированное двоичное дерево - это, вероятно, хороший выбор. – 2010-03-29 12:12:25
@thecoshman Поскольку его вопрос был помечен как C, я думаю, мы можем предположить, что он не использует C++. – 2010-03-29 12:13:30