⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fibheap.h

📁 基于测地距离不变性的非线性降维算法源码
💻 H
字号:
#ifndef _FIBHEAP_H#define _FIBHEAP_H//***************************************************************************// The Fibonacci heap implementation contained in FIBHEAP.H and FIBHEAP.CPP// is Copyright (c) 1996 by John Boyer//// Once this Fibonacci heap implementation (the software) has been published// by Dr. Dobb's Journal, permission to use and distribute the software is// granted provided that this copyright notice remains in the source and// and the author (John Boyer) is acknowledged in works that use this program.//// Every effort has been made to ensure that this implementation is free of// errors.  Nonetheless, the author (John Boyer) assumes no liability regarding// your use of this software.//// The author would also be very glad to hear from anyone who uses the// software or has any feedback about it.// Email: jboyer@gulf.csc.uvic.ca//***************************************************************************#define OK      0#define NOTOK   -1//======================================================// Fibonacci Heap Node Class//======================================================class FibHeap;class FibHeapNode{friend class FibHeap;     FibHeapNode *Left, *Right, *Parent, *Child;     short Degree, Mark, NegInfinityFlag;protected:     inline int  FHN_Cmp(FibHeapNode& RHS);     inline void FHN_Assign(FibHeapNode& RHS);public:     inline  FibHeapNode();     virtual ~FibHeapNode();     virtual void operator =(FibHeapNode& RHS);     virtual int  operator ==(FibHeapNode& RHS);     virtual int  operator <(FibHeapNode& RHS);     virtual void Print();};//========================================================================// Fibonacci Heap Class//========================================================================class FibHeap{     FibHeapNode *MinRoot;     long NumNodes, NumTrees, NumMarkedNodes;     int HeapOwnershipFlag;public:     FibHeap();     virtual ~FibHeap();// The Standard Heap Operations     void Insert(FibHeapNode *NewNode);     void Union(FibHeap *OtherHeap);     inline FibHeapNode *Minimum();     FibHeapNode *ExtractMin();     int DecreaseKey(FibHeapNode *theNode, FibHeapNode& NewKey);     int Delete(FibHeapNode *theNode);// Extra utility functions     int  GetHeapOwnership() { return HeapOwnershipFlag; };     void SetHeapOwnership() { HeapOwnershipFlag = 1; };     void ClearHeapOwnership() { HeapOwnershipFlag = 0; };     long GetNumNodes() { return NumNodes; };     long GetNumTrees() { return NumTrees; };     long GetNumMarkedNodes() { return NumMarkedNodes; };     void Print(FibHeapNode *Tree = NULL, FibHeapNode *theParent=NULL);private:// Internal functions that help to implement the Standard Operations     inline void _Exchange(FibHeapNode*&, FibHeapNode*&);     void _Consolidate();     void _Link(FibHeapNode *, FibHeapNode *);     void _AddToRootList(FibHeapNode *);     void _Cut(FibHeapNode *, FibHeapNode *);     void _CascadingCut(FibHeapNode *);};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -