mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-15 01:26:08 +02:00
77 lines
3.7 KiB
TeX
77 lines
3.7 KiB
TeX
\chapter{TSet}
|
|
|
|
Implements container for storing ordered set of unique elements.
|
|
Takes 2 arguments for specialization, first one is type of elements, second one is comparator class.
|
|
Usage example:
|
|
|
|
\lstinputlisting[language=Pascal]{setexample.pp}
|
|
|
|
Some methods return type of PNode. It has field Data, which can be used for retrieving data from
|
|
that node. This node can be also used for navigation between elements by methods of set class.
|
|
(But don't do anything else with it, you can lose data integrity.)
|
|
|
|
Memory complexity:
|
|
Size of stored elements + constant overhead for each stored element (3 pointers + one boolean).
|
|
|
|
Members list:
|
|
|
|
\begin{longtable}{|m{10cm}|m{5cm}|}
|
|
\hline
|
|
Method & Complexity guarantees \\ \hline
|
|
\multicolumn{2}{|m{15cm}|}{Description} \\ \hline\hline
|
|
|
|
\verb!Create! & O(1) \\ \hline
|
|
\multicolumn{2}{|m{15cm}|}{Constructor. Creates empty set.} \\ \hline\hline
|
|
|
|
\verb!function Size(): SizeUInt! & O(1) \\ \hline
|
|
\multicolumn{2}{|m{15cm}|}{Returns number of elements in set.} \\\hline\hline
|
|
|
|
\verb!procedure Insert(value: T)! &
|
|
O(lg N), N is number of elements in set \\ \hline
|
|
\multicolumn{2}{|m{15cm}|}{Inserts element into set.} \\\hline\hline
|
|
|
|
\verb!procedure Delete(value: T)! &
|
|
O(lg N), N is number of elements in set \\ \hline
|
|
\multicolumn{2}{|m{15cm}|}{Deletes value from set. If element is not in set, nothing happens.} \\\hline\hline
|
|
|
|
\verb!function Find(value: T):PNode! & O(lg N) \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Searches for value in set. If value is not there returns nil. Otherwise
|
|
returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
|
|
|
|
\verb!function FindLess(value: T):PNode! & O(lg N) \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Searches for greatest element less than value in set. If such element is not there returns nil. Otherwise
|
|
returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
|
|
|
|
\verb!function FindLessEqual(value: T):PNode! & O(lg N) \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Searches for greatest element less or equal than value in set. If such element is not there returns nil. Otherwise
|
|
returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
|
|
|
|
\verb!function FindGreater(value: T):PNode! & O(lg N) \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Searches for smallest element greater than value in set. If such element is not there returns nil. Otherwise
|
|
returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
|
|
|
|
\verb!function FindGreaterEqual(value: T):PNode! & O(lg N) \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Searches for smallest element greater or equal than value in set. If such element is not there returns nil. Otherwise
|
|
returns pointer to tree node (type PNode), which can be used for retrieving data from set.} \\\hline\hline
|
|
|
|
\verb!function Min:PNode! & O(lg N) \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Returns node containing smallest element of set. If set is empty returns
|
|
nil.} \\\hline\hline
|
|
|
|
\verb!function Max:PNode! & O(lg N) \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Returns node containing largest element of set. If set is empty returns
|
|
nil.} \\\hline\hline
|
|
|
|
\verb!function Next(x:PNode):PNode! & O(lg N) worst case, but traversal from smallest element to
|
|
largest takes O(N) time \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Returns successor of x. If x is largest element of set, returns nil.} \\\hline\hline
|
|
|
|
\verb!function Prev(x:PNode):PNode! & O(lg N) worst case, but traversal from largest element to
|
|
smallest takes O(N) time \\\hline
|
|
\multicolumn{2}{|m{15cm}|}{Returns predecessor of x. If x is smallest element of set, returns nil.} \\\hline\hline
|
|
|
|
\verb!function IsEmpty(): boolean! & O(1) \\ \hline
|
|
\multicolumn{2}{|m{15cm}|}{Returns true when set is empty.} \\\hline
|
|
|
|
\end{longtable}
|