19 class GenericHeapNode;
22 template <
class _NodeClass,
class _keyType>
34 virtual _NodeClass*
GetMin (
void) = 0;
37 virtual _NodeClass*
Delete (_NodeClass *
node) = 0;
48 class BinomialHeapNode;
51 template <
class _NodeClass,
class _keyType>
75 virtual _NodeClass*
GetMin (
void);
87 inline void Link (_NodeClass *root1, _NodeClass *root2) {
89 root1->parent = root2;
90 root1->sibling = root2->child;
103 template <
class _NodeClass,
class _keyType>
113 template <
class _NodeClass,
class _keyType>
123 int degree : ((
sizeof(int) * 8) - 1);
124 unsigned int mark : 1;
136 virtual _NodeClass*
GetMin (
void);
137 virtual _NodeClass*
Delete (_NodeClass *
node);
149 void Consolidate (
void);
150 void Link (_NodeClass *child, _NodeClass *parent);
151 virtual void Cut (_NodeClass *node1, _NodeClass *
node2);
152 virtual void CascadingCut (_NodeClass *
node);
160 template <
class _NodeClass,
class _keyType>
186 virtual _NodeClass*
GetMin (
void);
187 virtual _NodeClass*
Delete (_NodeClass *
node);
197 void Consolidate (
void);
198 void Link (_NodeClass *child, _NodeClass *parent);
200 virtual void RepairViolations (_NodeClass *
node);