**fig6_25.txt** /* 1*/ template /* 2*/ class Left_Node /* 3*/ { /* 4*/ protected: /* 5*/ Etype Element; /* 6*/ Left_Node *Left; /* 7*/ Left_Node *Right; /* 8*/ unsigned int Npl; /* 9*/ Left_Node( Etype E = 0, Left_Node *L = NULL, /*10*/ Left_Node *R = NULL, unsigned int Np = 0 ) : /*11*/ Element( E ), Left( L ), Right( R ), Npl( Np ) { } /*12*/ friend class Left_Heap; /*13*/ }; /*14*/ template /*15*/ class Left_Heap /*16*/ { /*17*/ private: /*18*/ Left_Node *Root; /*19*/ void Destroy( Left_Node *T ); /*20*/ Left_Node *Copy( Left_Node *T ); /*21*/ inline void Swap( Left_Node * & A, /*22*/ Left_Node * & B ); /*23*/ Left_Node *Merge ( /*24*/ Left_Node *H1, /*25*/ Left_Node *H2 ); /*26*/ Left_Node *Merge1( /*27*/ Left_Node *H1, /*28*/ Left_Node *H2 ); /*29*/ Left_Heap( Left_Heap & Value ); // Disabled. /*30*/ public: /*31*/ // Constructors. /*32*/ Left_Heap( unsigned int Initial_Size = 0 ) : Root( NULL ) { } /*33*/ // Destructor. /*34*/ ~Left_Heap( ) { Destroy( Root ); } /*35*/ // Operator. /*36*/ const Left_Heap & operator = ( const Left_Heap & Value ); /*37*/ // Member functions. /*38*/ void Make_Empty( ) { Destroy( Root ); Root = NULL; } /*39*/ int Is_Empty( ) const { return Root == NULL; } /*40*/ inline void Insert( const Etype & X ); /*41*/ inline void Merge( Left_Heap & Value ); /*42*/ inline const Etype & Find_Min( ) const; /*43*/ Etype Delete_Min( ); /*44*/ };