diff options
author | cathook <b01902109@csie.ntu.edu.tw> | 2014-04-20 00:31:50 +0800 |
---|---|---|
committer | cathook <b01902109@csie.ntu.edu.tw> | 2014-04-20 00:31:50 +0800 |
commit | 309e100b5d4200bec36d08e4882d62a80df262e6 (patch) | |
tree | a0cd650f8124292a28beb3f76c91fdabcfa55c33 /meowpp | |
parent | 17b755ca4efd7fad8699d38b18bc9021842c178a (diff) | |
download | meow-309e100b5d4200bec36d08e4882d62a80df262e6.tar.gz meow-309e100b5d4200bec36d08e4882d62a80df262e6.tar.zst meow-309e100b5d4200bec36d08e4882d62a80df262e6.zip |
zzz
Diffstat (limited to 'meowpp')
-rw-r--r-- | meowpp/dsa/Heaps.h | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/meowpp/dsa/Heaps.h b/meowpp/dsa/Heaps.h deleted file mode 100644 index 1e47afd..0000000 --- a/meowpp/dsa/Heaps.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef Heap_H__ -#define Heap_H__ - -#include <cstdlib> - -namespace meow{ - template<class Element> - class MergeableHeap{ // maximum-heap - private: - struct Node{ - Element value; - Node* l_child; - Node* r_child; - size_t weight; - Node(Element const& _value); - }; - // - Node* root; - // - void clear(Node* _node ); - Node* dup (Node* _node2 ); - Node* merge(Node* _left, Node* _right); - public: - MergeableHeap(); - MergeableHeap(MergeableHeap const& _heap2); - // - ~MergeableHeap(); - // - MergeableHeap& operator=(MergeableHeap const& _heap2); - void moveTo(MergeableHeap* _heap2); - // - Element const& top () const; - size_t size () const; - size_t empty() const; - // - void push (Element const& _value); - void pop ( ); - void clear( ); - void merge(MergeableHeap* _heap2); - }; - - /********************************************************* - @asciidoc - === meow:: *MergeableHeap<Key, Value>* (C++ class) - .Description - MergeableHeap is a kind of maximum-heap with a special method `merge`, - which will merge another MergeableHeap into itself in O(logN) time. - - .Template Request - * `Key` should has `operator<` - - .Support methods - * N <- number of elements in the heap - * M <- number of elements in the other heap if need - [options="header",width="100%",cols="1>,1<s,3<,1<,1<,10<",grid="rows"] - |======================================================================= - |Const?|Name| Parameters| Return Type| Time Complexity| Description - ||operator= | (MergeableHeap const&)| *this | O(N) - | Copy operator. - ||moveTo | (MergeableHeap*) | void | O(M) - | Transform the this->data to the heap specified in parameters - |const|top | () | Element | O(1) - | Return the maximum element in the heap. - |const|size | () | size_t | O(1) - | Return the number of elements in the heap. - |const|empty| () | bool | O(1) - | Return whether the heap is empty or not. - ||push |(Element) |void | O(log N) - | Add a element into the heap - ||pop |() |void | O(log N) - | Delete the maximum element from the heap - ||merge |(MergeableHeap*) |void | O(log M) - | Merge the specified MergeableHeap(with size=M) into itself - ||clear |() |void | O(N) - | Delete all elements from the heap - |======================================================================= - -WARNING: Consider there are two MergeableHeap `A` and `B`. + -`B` will become empty after you call `A.merge(&B)`. + -The data in `B` will override by data in `A` and `A` will become empty after -you call `A.moveTo(&B)` - -''' -@asciidoc- - *********************************************************/ -} - -#include "MergeableHeap.hpp" - -#endif // Heap_H__ |