I want to implement a Set in C.
Is it OK to use a linked list, when creating the SET, or should I use another approach ?
How do you usually implement your own set (if needed).
NOTE:
If I use the Linked List approach, I will probably have the following complexities for Set my operations:
- init : O(1);
- destroy: O(n);
- insert: O(n);
- remove: O(n);
- union: O(n*m);
- intersection: O(n*m);
- difference: O(n*m);
- ismember: O(n);
- issubset: O(n*m);
- setisequal: O(n*m);
O(n*m) seems may be a little to big especially for huge data… Is there a way to implement my Set more efficient ?
I have used Red-Black trees in the past to build sets.
Here are the time complexities from the Wikipedia article.
Space O(n)
Search O(log n)
Insert O(log n)
Delete O(log n)