www.pudn.com > huffman.rar > ECBTree.h


#ifndef ECBTREE_H 
	#define ECBTREE_H 
	#define EBTreeType long 
	struct BinTreeNode; 
	 
	typedef struct BinTreeNode* PBinTreeNode; 
	 
	struct BinTreeNode 
	{ 
		EBTreeType info; 
		PBinTreeNode llink; 
		PBinTreeNode rlink; 
	}; 
	 
	typedef struct BinTreeNode* BinTree; 
	typedef BinTree* PBinTree; 
	 
	/*Start of Find Path Ulti Value*/ 
	int gConsPos; 
	int gFind; 
	char* gFindList; 
	int findLen; 
	PBinTreeNode targetNode; 
	/*End of Find Path Ulti Value*/ 
	 
	extern PBinTree consBTree(EBTreeType* initList); 
	extern PBinTreeNode consRestBTree(EBTreeType* initList); 
	extern void findPath(PBinTreeNode inNode,PBinTreeNode searchNode); 
	extern void prePanDuan(PBinTreeNode inNode,PBinTreeNode searchNode); 
	extern void preOrder(PBinTreeNode inNode); 
	extern void preVisit(EBTreeType info); 
	extern void locateNode(PBinTreeNode inNode,EBTreeType inInfo,PBinTree targetNode); 
	 
	extern void preOrderUnStack(PBinTreeNode inNode); 
	 
	/*Haffman Tree Ver1*/ 
	#define MAXCHAR 30000 
	#define MAXNODE 300 
	#define MAXNUM  150 
	#define InfoType char 
	struct HtNode 
	{ 
		EBTreeType ww; 
		char info; 
		int parentIndex; 
		int llinkIndex; 
		int rlinkIndex; 
	}; 
	 
	struct HtTree 
	{ 
		struct HtNode ht[MAXNODE]; 
		int rootIndex; 
	}; 
	 
	typedef struct HtTree* PHtTree; 
	 
	typedef struct 
	{ 
		char asciiCode; 
		unsigned long haffCode; 
		int haffCodeLen; 
	}HaffCode; 
	 
	 
	extern PHtTree consHtTree(EBTreeType* initList); 
	extern PHtTree haffmanAlgorithm(int m,EBTreeType* w); 
	extern void preHtOrder(PHtTree inTree,int rootIndex); 
	extern void preHtVisit(InfoType info); 
	extern void preHaffListMake(PHtTree inTree,int rootIndex,unsigned youBiao,int sDepth,HaffCode* inList); 
	 
	/*End of Defination of Haffman Tree*/ 
#endif