set.tex 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. \chapter{TSet}
  2. Implements container for storing ordered set of unique elements.
  3. Takes 2 arguments for specialization, first one is type of elements, second one is comparator class.
  4. Usage example:
  5. \lstinputlisting[language=Pascal]{setexample.pp}
  6. Some methods return type of PNode. It has field Data, which can be used for retrieving data from
  7. that node. This node can be also used for navigation between elements by methods of set class.
  8. (But don't do anything else with it, you can lose data integrity.)
  9. Memory complexity:
  10. Size of stored base + constant overhead for each stored element (3 pointers + one boolean).
  11. Members list:
  12. \begin{longtable}{|m{10cm}|m{5cm}|}
  13. \hline
  14. Method & Complexity guarantees \\ \hline
  15. \multicolumn{2}{|m{15cm}|}{Description} \\ \hline\hline
  16. \verb!Create! & O(1) \\ \hline
  17. \multicolumn{2}{|m{15cm}|}{Constructor. Creates empty set.} \\ \hline\hline
  18. \verb!function Size(): SizeUInt! & O(1) \\ \hline
  19. \multicolumn{2}{|m{15cm}|}{Returns number of elements in set.} \\\hline\hline
  20. \verb!procedure Insert(value: T)! &
  21. O(lg N), N is number of elements in set \\ \hline
  22. \multicolumn{2}{|m{15cm}|}{Inserts element into set.} \\\hline\hline
  23. \verb!procedure Delete(value: T)! &
  24. O(lg N), N is number of elements in set \\ \hline
  25. \multicolumn{2}{|m{15cm}|}{Deletes value from set. If element is not in set, nothing happens.} \\\hline\hline
  26. \verb!function Find(value: T):PNode! & O(lg N) \\\hline
  27. \multicolumn{2}{|m{15cm}|}{Searches for value in set. If value is not there returns nil. Otherwise
  28. returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
  29. \verb!function FindLess(value: T):PNode! & O(lg N) \\\hline
  30. \multicolumn{2}{|m{15cm}|}{Searches for greatest element less than value in set. If such element is not there returns nil. Otherwise
  31. returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
  32. \verb!function FindLessEqual(value: T):PNode! & O(lg N) \\\hline
  33. \multicolumn{2}{|m{15cm}|}{Searches for greatest element less or equal than value in set. If such element is not there returns nil. Otherwise
  34. returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
  35. \verb!function FindGreater(value: T):PNode! & O(lg N) \\\hline
  36. \multicolumn{2}{|m{15cm}|}{Searches for smallest element greater than value in set. If such element is not there returns nil. Otherwise
  37. returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
  38. \verb!function FindGreaterEqual(value: T):PNode! & O(lg N) \\\hline
  39. \multicolumn{2}{|m{15cm}|}{Searches for smallest element greater or equal than value in set. If such element is not there returns nil. Otherwise
  40. returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
  41. \verb!function Min:PNode! & O(lg N) \\\hline
  42. \multicolumn{2}{|m{15cm}|}{Returns node containing smallest element of set. If set is empty returns
  43. nil.} \\\hline\hline
  44. \verb!function Max:PNode! & O(lg N) \\\hline
  45. \multicolumn{2}{|m{15cm}|}{Returns node containing largest element of set. If set is empty returns
  46. nil.} \\\hline\hline
  47. \verb!function Next(x:PNode):PNode! & O(lg N) worst case, but traversal from smallest element to
  48. largest takes O(N) time \\\hline
  49. \multicolumn{2}{|m{15cm}|}{Returns successor of x. If x is largest element of set, returns nil.} \\\hline\hline
  50. \verb!function Prev(x:PNode):PNode! & O(lg N) worst case, but traversal from largest element to
  51. smallest takes O(N) time \\\hline
  52. \multicolumn{2}{|m{15cm}|}{Returns predecessor of x. If x is smallest element of set, returns nil.} \\\hline\hline
  53. \verb!function IsEmpty(): boolean! & O(1) \\ \hline
  54. \multicolumn{2}{|m{15cm}|}{Returns true when set is empty.} \\\hline
  55. \end{longtable}