summaryrefslogtreecommitdiff
path: root/include/FHeap.h
blob: ac58a6df34061b84b236e34b5e28098fe33b4194 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef __FHEAP_H__
#define __FHEAP_H__
#include <PCommon.h>
#define DFMAX 128

#ifdef __cplusplus
typedef class FHeap:public PriorityList {
      private:
	FHeap * Father, *Child, *Left, *Right;
	int Degree;
	bool Mark;

	void Link(FHeap * x);	
	void Rebuild(void);	
	  FHeap(Key_t IKey, Datas_t const &IDatas);	// Insert 
	FHeap *Insert(FHeap * x);	
	void Cut(FHeap * x, FHeap * y);
	void CascadeCut(FHeap * y);

      public:
	  FHeap(void);		// Constructor                         
	 ~FHeap(void);		// Destructor

	virtual int rn(void);

	virtual void Dump(ostream & os);
	void RDump(ostream & os);
	virtual bool IsEmpty(void);

	virtual Cell Min(void);	
	virtual Cell Insert(Key_t IKey, Datas_t const &IDatas);	
	virtual Key_t Extract_Min(Datas_t & Datas);
	virtual PriorityList *Union(PriorityList * P);	
	virtual bool Lower_Key(Cell x, Key_t NKey);
	virtual Key_t Delete(Datas_t & Datas, Cell x);
} FHeap;
#else
#error This librairy will only compile with a C++ compiler.
#endif
#endif