/* ==================================================================== * ÆÄ ÀÏ : BinSearchAE.h * ¸ñ Àû : °Ë»öÀ» Áö¿øÇÏ´Â ¸Þ¸ð¸® ¸®½ºÆ®¸¦ Á¦°øÇÑ´Ù. * ÀÛ ¼º ÀÚ : À̹ý¼® * ÀÛ ¼º ÀÏ : 2006.11.10 * * Ãß°¡³»¿ë : * Ãß°¡³¯Â¥ ÀÛ¾÷ÀÚ Ãß°¡³»¿ë * 06.11.10 À̹ý¼® ¹¬Çâ ¼Ò½º ÂüÁ¶ * * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once struct sBsaeNode; struct sContainerAE { sBsaeNode* pOwner; sContainerAE* pPrv; sContainerAE* pNext; void* pItem; unsigned long dwKey; }; struct sBsaeNode { unsigned long dwKey; sBsaeNode* pParent; sBsaeNode* pLeft; sBsaeNode* pRight; unsigned long dwRefCount; sContainerAE* pContainer; }; class cBinSearchAE { sBsaeNode* mpRootNode; sBsaeNode* mpNodePool; char* mpContainerPool; sBsaeNode** mppNodeTable; sContainerAE** mppContainerTable; unsigned long mReservedNodeNum; unsigned long mReservedItemNum; unsigned long mItemNum; unsigned long mMaxItemNum; unsigned long mContainerSize; sBsaeNode* AllocNode(); void FreeNode( sBsaeNode* pNode ); sContainerAE* AllocContainer(); void FreeContaiener( sContainerAE* pContainer ); sBsaeNode* SearchNode( unsigned long dwKey ); void DeleteNode( sBsaeNode* pDel ); public: unsigned long GetItemNum() {return mItemNum;} bool Initialize( unsigned long dwMaxItemNum ); sContainerAE* InsertItem( unsigned long dwKey,void* pItem ); bool DeleteItem( sContainerAE* pItemContainer ); void* SearchItem( unsigned long dwKey ); sContainerAE* SearchContainer( unsigned long dwKey ); cBinSearchAE(); ~cBinSearchAE(); };