|
@@ -7,11 +7,6 @@ Usage example:
|
|
|
|
|
|
\lstinputlisting[language=Pascal]{mapexample.pp}
|
|
|
|
|
|
-Some methods return type TMSet.PNode. Usefull fields are Data.Key, Data.Value, for retrieving
|
|
|
-actual Key and Value from node. This node can be also used for navigation between elements by methods of set class.
|
|
|
-You can also change value in node (but not key).
|
|
|
-(But don't do anything else with it, you can lose data integrity.)
|
|
|
-
|
|
|
Memory complexity:
|
|
|
Size of stored base + constant overhead for each stored element (3 pointers + one boolean).
|
|
|
|
|
@@ -33,55 +28,75 @@ O(lg N), N is number of elements in map \\ \hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Inserts key value pair into map. If key was already there, it will have
|
|
|
new value assigned.} \\\hline\hline
|
|
|
|
|
|
+\verb!function InsertAndGetIterator! & $O(\lg N)$\\
|
|
|
+\verb!(key:TKey; value: TValue):TIterator! & \\ \hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Same as Insert but also returns iterator poiting to inserted element.} \\\hline\hline
|
|
|
+
|
|
|
\verb!procedure Delete(key: TKey)! &
|
|
|
O(lg N) \\ \hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Deletes key (and associated value) from map. If element is not in map, nothing happens.} \\\hline\hline
|
|
|
|
|
|
-\verb!function Find(key: T):TMSet.PNode! & O(lg N) \\\hline
|
|
|
+\verb!function Find(key: T):TIterator! & O(lg N) \\\hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Searches for key in map. If value is not there returns nil. Otherwise
|
|
|
-returns pointer to tree node (type TMSet.PNode), which can be used for retrieving data from map.} \\\hline\hline
|
|
|
+returns iterator, which can be used for retrieving data from map.} \\\hline\hline
|
|
|
|
|
|
-\verb!function FindLess(key: T):TMSet.PNode! & O(lg N) \\\hline
|
|
|
+\verb!function FindLess(key: T):TIterator! & O(lg N) \\\hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Searches for greatest element less than key in map. If such element is not there returns nil. Otherwise
|
|
|
-returns pointer to tree node (type TMSet.PNode), which can be used for retrieving data from map.} \\\hline\hline
|
|
|
+returns iterator, which can be used for retrieving data from map.} \\\hline\hline
|
|
|
|
|
|
-\verb!function FindLessEqual(key: T):TMSet.PNode! & O(lg N) \\\hline
|
|
|
+\verb!function FindLessEqual(key: T):TIterator! & O(lg N) \\\hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Searches for greatest element less or equal than key in map. If such element is not there returns nil. Otherwise
|
|
|
-returns pointer to tree node (type TMSet.PNode), which can be used for retrieving data from map.} \\\hline\hline
|
|
|
+returns iterator, which can be used for retrieving data from map.} \\\hline\hline
|
|
|
|
|
|
-\verb!function FindGreater(key: T):TMSet.PNode! & O(lg N) \\\hline
|
|
|
+\verb!function FindGreater(key: T):TIterator! & O(lg N) \\\hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Searches for smallest element greater than key in map. If such element is not there returns nil. Otherwise
|
|
|
-returns pointer to tree node (type TMSet.PNode), which can be used for retrieving data from map.} \\\hline\hline
|
|
|
+returns iterator, which can be used for retrieving data from map.} \\\hline\hline
|
|
|
|
|
|
-\verb!function FindGreaterEqual(key: T):TMSet.PNode! & O(lg N) \\\hline
|
|
|
+\verb!function FindGreaterEqual(key: T):TIterator! & O(lg N) \\\hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Searches for smallest element greater or equal than key in map. If such element is not there returns nil. Otherwise
|
|
|
-returns pointer to tree node (type TMSet.PNode), which can be used for retrieving data from map.} \\\hline\hline
|
|
|
+returns iterator, which can be used for retrieving data from map.} \\\hline\hline
|
|
|
|
|
|
-\verb!function Min:TMSet.PNode! & O(lg N) \\\hline
|
|
|
-\multicolumn{2}{|m{15cm}|}{Returns node containing smallest key of map. If map is empty returns
|
|
|
+\verb!function Min:TIterator! & O(lg N) \\\hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Returns iterator pointing to smallest key of map. If map is empty returns
|
|
|
nil.} \\\hline\hline
|
|
|
|
|
|
-\verb!function Max:TMSet.PNode! & O(lg N) \\\hline
|
|
|
-\multicolumn{2}{|m{15cm}|}{Returns node containing largest key of map. If map is empty returns
|
|
|
+\verb!function Max:TIterator! & O(lg N) \\\hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Returns iterator pointing to largest key of map. If map is empty returns
|
|
|
nil.} \\\hline\hline
|
|
|
|
|
|
-\verb!function Next(x:TMSet.PNode):TMSet.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 key of map, returns nil.} \\\hline\hline
|
|
|
-
|
|
|
-\verb!function Prev(x:TMSet.PNode):TMSet.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 key of map, returns nil.} \\\hline\hline
|
|
|
-
|
|
|
\verb!function IsEmpty(): boolean! & O(1) \\ \hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Returns true when map is empty.} \\\hline
|
|
|
|
|
|
-\verb!function GetValue(key:TKey):TValue! & O(lg N) \\\hline
|
|
|
-\multicolumn{2}{|m{15cm}|}{Returns value associated with key. Is key isn't in map crashes.} \\\hline
|
|
|
-
|
|
|
\verb!property item[i: Key]: TValue; default;! & O(ln N) \\\hline
|
|
|
\multicolumn{2}{|m{15cm}|}{Property for accessing key i in map. Can be used just by square
|
|
|
brackets (its default property).} \\\hline\hline
|
|
|
|
|
|
|
|
|
+\end{longtable}
|
|
|
+
|
|
|
+Some methods return type TIterator, which has following methods:
|
|
|
+\begin{longtable}{|m{10cm}|m{5cm}|}
|
|
|
+\hline
|
|
|
+Method & Complexity guarantees \\ \hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Description} \\ \hline\hline
|
|
|
+\verb!function Next:boolean! & O(lg N) worst case, but traversal from smallest element to
|
|
|
+largest takes O(N) time \\\hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Moves iterator to element with smallest larger key. Returns true on
|
|
|
+success. If the iterator is already pointing on element with largest key returns false.} \\\hline\hline
|
|
|
+
|
|
|
+\verb!function Prev:boolean! & O(lg N) worst case, but traversal from largest element to
|
|
|
+smallest takes O(N) time \\\hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Moves iterator to element with largest smaller key. Returns true on
|
|
|
+success. If the iterator is already pointing on element with smallest key returns false.} \\\hline\hline
|
|
|
+
|
|
|
+\verb!property Key:TKey! & $O(1)$ \\\hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Property, which allows reading the key.} \\\hline
|
|
|
+
|
|
|
+\verb!property Value:TValue! & $O(1)$ \\\hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Property, which allows reading and writing of the value.} \\\hline
|
|
|
+\verb!property MutableValue:PValue! & $O(1)$ \\\hline
|
|
|
+\multicolumn{2}{|m{15cm}|}{Returns pointer on stored value. Usefull for accessing records and
|
|
|
+objects.} \\\hline
|
|
|
+
|
|
|
+
|
|
|
\end{longtable}
|