set.tex 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. Memory complexity:
  7. Size of stored elements + constant overhead for each stored element (3 pointers + one boolean).
  8. Members list:
  9. \begin{longtable}{|m{10cm}|m{5cm}|}
  10. \hline
  11. Method & Complexity guarantees \\ \hline
  12. \multicolumn{2}{|m{15cm}|}{Description} \\ \hline\hline
  13. \verb!Create! & O(1) \\ \hline
  14. \multicolumn{2}{|m{15cm}|}{Constructor. Creates empty set.} \\ \hline\hline
  15. \verb!function Size(): SizeUInt! & O(1) \\ \hline
  16. \multicolumn{2}{|m{15cm}|}{Returns number of elements in set.} \\\hline\hline
  17. \verb!procedure Insert(value: T)! &
  18. O(lg N), N is number of elements in set \\ \hline
  19. \multicolumn{2}{|m{15cm}|}{Inserts element into set, if given element is already there nothing
  20. happens.} \\\hline\hline
  21. \verb!function InsertAndGetIterator! & $O(\lg N)$\\
  22. \verb!(value: T):TIterator! & \\ \hline
  23. \multicolumn{2}{|m{15cm}|}{Inserts element into set, if given element is already there nothing
  24. happens. Also returns iterator pointing on given element.} \\\hline\hline
  25. \verb!procedure Delete(value: T)! &
  26. O(lg N), N is number of elements in set \\ \hline
  27. \multicolumn{2}{|m{15cm}|}{Deletes value from set. If element is not in set, nothing happens.} \\\hline\hline
  28. \verb!function Find(value: T):TIterator! & O(lg N) \\\hline
  29. \multicolumn{2}{|m{15cm}|}{Searches for value in set. If value is not there returns nil. Otherwise
  30. returns iterator, which can be used for retrieving data from set.} \\\hline\hline
  31. \verb!function FindLess(value: T):TIterator! & O(lg N) \\\hline
  32. \multicolumn{2}{|m{15cm}|}{Searches for greatest element less than value in set. If such element is not there returns nil. Otherwise
  33. returns iterator, which can be used for retrieving data from set.} \\\hline\hline
  34. \verb!function FindLessEqual(value: T):TIterator! & O(lg N) \\\hline
  35. \multicolumn{2}{|m{15cm}|}{Searches for greatest element less or equal than value in set. If such element is not there returns nil. Otherwise
  36. returns iterator, which can be used for retrieving data from set.} \\\hline\hline
  37. \verb!function FindGreater(value: T):TIterator! & O(lg N) \\\hline
  38. \multicolumn{2}{|m{15cm}|}{Searches for smallest element greater than value in set. If such element is not there returns nil. Otherwise
  39. returns iterator, which can be used for retrieving data from set.} \\\hline\hline
  40. \verb!function FindGreaterEqual(value: T):TIterator! & O(lg N) \\\hline
  41. \multicolumn{2}{|m{15cm}|}{Searches for smallest element greater or equal than value in set. If such element is not there returns nil. Otherwise
  42. returns iterator, which can be used for retrieving data from set.} \\\hline\hline
  43. \verb!function Min:TIterator! & O(lg N) \\\hline
  44. \multicolumn{2}{|m{15cm}|}{Returns iterator pointing to the smallest element of set. If set is empty returns
  45. nil.} \\\hline\hline
  46. \verb!function Max:TIterator! & O(lg N) \\\hline
  47. \multicolumn{2}{|m{15cm}|}{Returns iterator pointing to the largest element of set. If set is empty returns
  48. nil.} \\\hline\hline
  49. \verb!function IsEmpty(): boolean! & O(1) \\ \hline
  50. \multicolumn{2}{|m{15cm}|}{Returns true when set is empty.} \\\hline
  51. \end{longtable}
  52. Some methods return type TIterator, which has following methods:
  53. \begin{longtable}{|m{10cm}|m{5cm}|}
  54. \hline
  55. Method & Complexity guarantees \\ \hline
  56. \multicolumn{2}{|m{15cm}|}{Description} \\ \hline\hline
  57. \verb!function Next:boolean! & O(lg N) worst case, but traversal from smallest element to
  58. largest takes O(N) time \\\hline
  59. \multicolumn{2}{|m{15cm}|}{Moves iterator to smallest larger element in set. Returns true on
  60. success. If the iterator is already pointing on largest element returns false.} \\\hline\hline
  61. \verb!function Prev:boolean! & O(lg N) worst case, but traversal from largest element to
  62. smallest takes O(N) time \\\hline
  63. \multicolumn{2}{|m{15cm}|}{Moves iterator to largest smaller element in set. Returns true on
  64. success. If the iterator is already pointing on smallest element returns false.} \\\hline\hline
  65. \verb!property Data:T! & $O(1)$ \\\hline
  66. \multicolumn{2}{|m{15cm}|}{Property, which allows reading of the element.} \\\hline
  67. \end{longtable}