亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? btree.h

?? uc/os 很好的學習代碼
?? H
字號:
/*------------------------------------------------------------------------*/
/*                                                                        */
/*  BTREE.H                                                               */
/*                                                                        */
/*  Copyright Borland International 1991                                  */
/*  All Rights Reserved                                                   */
/*                                                                        */
/*------------------------------------------------------------------------*/

#if !defined( __BTREE_H )
#define __BTREE_H

#if !defined( __CHECKS_H )
#include <Checks.h>
#endif  // __CHECKS_H

#if !defined( __SORTABLE_H )
#include <Sortable.h>
#endif  // __SORTABLE_H

#if !defined( __COLLECT_H )
#include <Collect.h>
#endif  // __COLLECT_H

_CLASSDEF(Node)
_CLASSDEF(Item)
_CLASSDEF(Btree)
_CLASSDEF(InnerNode)
_CLASSDEF(LeafNode)
_CLASSDEF(BtreeIterator)

class _CLASSTYPE Node
{

public:

    /*dbg*/int debugKey; // !*!*!*! not for distribution!

    Node( int b, InnerNode _FAR * P, Btree _FAR * T = 0 );
    virtual ~Node();

    virtual void add( Sortable _FAR *, int ) = 0;
    virtual void remove( int ) = 0;

    virtual Object _FAR & operator[]( long i ) const = 0;
    virtual Object _FAR & found( Sortable _FAR *,
                                 Node _FAR * _FAR *,
                                 int _FAR *
                               ) = 0;

    virtual long findRank( Sortable _FAR * ) const = 0;
    virtual long nofKeys() const = 0; // # keys in or below this node

    virtual LeafNode _FAR * firstLeafNode() = 0;
    virtual LeafNode _FAR * lastLeafNode() = 0;

    virtual void split() = 0;

    virtual void printOn(ostream _FAR &) const = 0;
    friend ostream _FAR & operator <<( ostream _FAR &, const Node _FAR & );

    int last;   // for inner node 1 <= last <= InnerMaxIndex
                // for leaf node  1 <= last <= LeafMaxIndex
                // (last==0 only temporarily while the tree is being
                //  updated)
    InnerNode _FAR *parent; // a parent is always an inner node (or 0 for the root)
    Btree _FAR *tree;   // the tree of which this node is a part
    int isLeaf; // run-time type flag

};

class _CLASSTYPE Item
{

public:

    Item();
    Item(Node _FAR * n, Sortable _FAR * o);
    Item(Sortable _FAR * o, Node _FAR * n);
    ~Item();
    // data
    long nofKeysInTree; // tree can have more than 32K elements
    Sortable _FAR *key;
    Node _FAR *tree;

};

class _CLASSTYPE InnerNode : public Node
{

public:

    InnerNode( InnerNode _FAR *, Btree _FAR * = 0 );
    InnerNode( InnerNode _FAR *, Btree _FAR *, Node _FAR * );
    ~InnerNode();

    void add( Sortable _FAR *, int );
    void add( Item _FAR &, int );
    void add( int, Sortable _FAR *, Node _FAR * );
    void addElt( Item _FAR &, int );
    void addElt( int, Sortable _FAR *, Node _FAR * );
    void remove( int );
    void removeItem( int );

    Object _FAR & operator[]( long i ) const;
    Object _FAR & found( Sortable _FAR *, Node _FAR * _FAR *, int _FAR * );

    long nofKeys( int i ) const;
    void setTree( int i, Node _FAR * node );
    void setKey( int i, Sortable _FAR * obj );
    void setItem( int i, Item _FAR & itm );
    void setItem( int i, Sortable _FAR * obj, Node _FAR * node );
    long getNofKeys( int i ) const;
    void setNofKeys( int i, long r );
    long incNofKeys( int i, long N=1 );
    long decNofKeys( int i, long N=1 );
    long findRank( Sortable _FAR * ) const;
    long findRank_bu( const Node _FAR * ) const;
    Node _FAR *getTree( int i ) const;
    Sortable _FAR *getKey( int i ) const;
    Item _FAR & getItem( int i ) const;


    int  indexOf( const Node _FAR * ) const;
    void incrNofKeys( Node _FAR * np );
    void decrNofKeys( Node _FAR * np );
    long nofKeys() const;

    LeafNode _FAR *firstLeafNode();
    LeafNode _FAR *lastLeafNode();

    void informParent();

    void split();
    void splitWith( InnerNode _FAR *, int );
    void mergeWithRight( InnerNode _FAR *, int );
    void balanceWithLeft( InnerNode _FAR *, int );
    void balanceWithRight( InnerNode _FAR *, int );
    void balanceWith( InnerNode _FAR *, int );
    void pushLeft( int cnt, InnerNode _FAR * leftsib, int parentIdx );
    void pushRight( int cnt, InnerNode _FAR * rightsib, int parentIdx );
    void appendFrom( InnerNode _FAR *, int, int );
    void append( Sortable _FAR *, Node _FAR * );
    void append( Item _FAR & );
    void shiftLeft( int );

    int Psize() const;
    int Vsize() const;
    int maxIndex() const;
    int maxPsize() const;

    void printOn(ostream&) const;

    int isFull() const;
    void isFull( Node _FAR * );
    int isAlmostFull() const;
    int isLow() const;
    void isLow( Node _FAR * );

private:

    Item _FAR *item; // actually items[maxIndex()+1] is desired

};

class _CLASSTYPE LeafNode : public Node
{

public:

    LeafNode(InnerNode _FAR * P, Sortable _FAR * obj = 0, Btree _FAR * T = 0 );
    ~LeafNode();

    void add( Sortable _FAR * , int );
    void remove( int i );
    void removeItem( int i);

    Object _FAR & operator[]( long i ) const;
    Object _FAR & found( Sortable _FAR *, Node _FAR * _FAR *, int _FAR * );

    long nofKeys( int i ) const;
    long nofKeys() const;
    long findRank( Sortable _FAR * ) const;
    Sortable _FAR *getKey( int idx ) { return item[idx]; }
    void setKey( int idx, Sortable _FAR * obj ) { item[idx] = obj; }

    int indexOf( const Sortable _FAR * ) const;

    LeafNode _FAR *firstLeafNode();
    LeafNode _FAR *lastLeafNode();

    void split();
    void splitWith( LeafNode _FAR *, int );
    void mergeWithRight( LeafNode _FAR *, int );
    void balanceWithLeft( LeafNode _FAR *, int );
    void balanceWithRight( LeafNode _FAR *, int );
    void balanceWith( LeafNode _FAR *, int );
    void pushLeft( int cnt, LeafNode _FAR *, int parentIndex );
    void pushRight( int cnt, LeafNode _FAR *, int parentIndex );
    void appendFrom( LeafNode _FAR *, int, int );
    void append( Sortable _FAR * );
    void shiftLeft ( int );

    int Psize() const;
    int Vsize() const;
    int maxIndex() const;
    int maxPsize() const;

    void printOn(ostream _FAR &) const;

    int isFull() const;
    int isAlmostFull() const;
    int isLow() const;

    Sortable _FAR * _FAR *item; // actually Sortable* item[maxIndex()+1] is desired

};

class _CLASSTYPE Btree : public Collection
{

public:

    Btree( int ordern = 3 );//-create a Btree of order n
    ~Btree();

    void add( Object _FAR & );
    void detach( Object _FAR &, DeleteType = NoDelete );
    void flush( DeleteType = DefDelete );
    virtual int hasMember( Object _FAR & ) const;
    virtual Object _FAR & findMember( Object _FAR & ) const;

    virtual int isEmpty() const { return itemsInContainer == 0; }
    virtual countType getItemsInContainer() const { return itemsInContainer; }

    virtual classType isA() const { return btreeClass; }
    virtual char _FAR *nameOf() const { return "Btree"; }
    virtual int isEqual( const Object _FAR & ) const;
    virtual void printOn( ostream _FAR & ) const;
    virtual ContainerIterator _FAR & initIterator() const;



    int order();
    Object _FAR & operator[]( long i ) const;
    long rank( const Object _FAR & ) const;

protected:

    void incrNofKeys() { itemsInContainer++; }
    void decrNofKeys() { itemsInContainer--; }

    long i_add( const Object _FAR & );
         //-add the object to the tree; return the index
         // in the tree at which the object was inserted
         // (C++ doesn't allow signatures
         // to differ in only the return value).
         // NOTE: other insertions and deletions may
         // change this object's index.
private:

    int Order;          //-the order of the tree (should be > 2)
    int Order2;         //-always == order*2+1 (assumes a memory access
                        // is cheaper than a multiply and increment by one
    int Inner_LowWaterMark;
    int Leaf_LowWaterMark;
    int Inner_MaxIndex;
    int Leaf_MaxIndex;

    Node _FAR *root;

    void finishInit(int);
    void rootIsFull();   // called when the root node is full
    void rootIsEmpty();  // called when root is empty

    unsigned itemsInContainer;

    friend Node;
    friend InnerNode;
    friend LeafNode;

};


inline Node _FAR *InnerNode::getTree( int i ) const
{
    return item[i].tree;
}

inline Sortable _FAR * InnerNode::getKey( int i ) const
{
    return item[i].key;
}

inline Item _FAR & InnerNode::getItem( int i ) const
{
    return item[i];
}

inline void InnerNode::setTree( int i, Node _FAR * node )
{
    item[i].tree = node;
    node->parent = this;
}

inline void InnerNode::setKey( int i, Sortable _FAR * obj )
{
    item[i].key = obj;
}

inline void InnerNode::setItem( int i, Item _FAR & itm )
{
    item[i] = itm;
    itm.tree->parent = this;
}

inline void InnerNode::setItem( int i, Sortable _FAR * obj, Node _FAR * node )
{
    setTree(i, node);
    setKey(i, obj);
}

inline long InnerNode::getNofKeys( int i ) const
{
    PRECONDITION( i >= 0 && i <= last );
    return item[i].nofKeysInTree;
}

inline void InnerNode::setNofKeys( int i, long r )
{
    item[i].nofKeysInTree = r;
}

inline long InnerNode::incNofKeys( int i, long N )
{
    return ( item[i].nofKeysInTree += N );
}

inline long InnerNode::decNofKeys( int i, long N )
{
    return ( item[i].nofKeysInTree -= N );
}

inline long InnerNode::nofKeys( int i ) const
{
    return getNofKeys(i);
}

inline int InnerNode::Psize() const
{
    return last;
}

inline int InnerNode::Vsize() const
{
    PRECONDITION( parent != 0 && parent->getTree(0) != (Node _FAR *)this );
    return Psize()+1;
}

inline int InnerNode::maxIndex() const
{
    return tree->Inner_MaxIndex;
}

inline int InnerNode::maxPsize() const
{
    return tree->Inner_MaxIndex;
}

inline int InnerNode::isFull() const
{
    return last == maxIndex();
}

inline int InnerNode::isAlmostFull() const
{
    return last >= maxIndex() - 1;
}

inline int InnerNode::isLow() const
{
    return last < tree->Inner_LowWaterMark;
}

inline void LeafNode::removeItem( int i)
{
    remove(i);
}

inline Object _FAR & LeafNode::operator[]( long i ) const
{
    PRECONDITION( i >=0 && i <= last );
    return *((Object _FAR *)item[(int)i]);    // CHECK - cast to int OK?
}

inline int LeafNode::Psize() const
{
    return last+1;
}

inline int LeafNode::Vsize() const
{
    PRECONDITION( parent != 0 && parent->getTree(0) != (Node _FAR *)this );
    return Psize()+1;
}

inline int LeafNode::maxIndex() const
{
    return tree->Leaf_MaxIndex;
}

inline int LeafNode::maxPsize() const
{
    return tree->Leaf_MaxIndex + 1;
}

inline int LeafNode::isFull() const
{
    return last == maxIndex();
}

inline int LeafNode::isAlmostFull() const
{
    return last >= maxIndex() - 1;
}

inline int LeafNode::isLow() const
{
    return last < tree->Leaf_LowWaterMark;
}

inline int Btree::order()
{
    return Order;
}

inline ostream _FAR & operator <<( ostream& outputStream, const Node _FAR & aNode)
{
    aNode.printOn( outputStream );
    return outputStream;
}

class _CLASSTYPE BtreeIterator : public ContainerIterator
{
public:
            BtreeIterator( const Btree _FAR & );
    virtual ~BtreeIterator();

    virtual operator int();
    virtual Object _FAR & current();
    virtual Object _FAR & operator ++();
    virtual Object _FAR & operator ++( int );
    virtual void restart();

private:
    const   Btree _FAR & beingIterated;
            long index;
};

inline BtreeIterator::BtreeIterator( const Btree _FAR & toIterate ) :
    beingIterated( toIterate ), index( 0 )
{
}

inline Object _FAR & Btree::operator[]( long i ) const { return (*root)[i]; }

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频国产视频| 丝袜亚洲精品中文字幕一区| 26uuu国产日韩综合| 国产午夜精品福利| 国产精品欧美极品| 亚洲国产精品一区二区www在线 | 欧美性大战久久久| 91精品国产色综合久久ai换脸| 2023国产精品自拍| 亚洲国产一区视频| 国产一二精品视频| 欧美日韩一区二区三区在线看| 久久只精品国产| 一区二区久久久久久| 韩国v欧美v亚洲v日本v| 在线国产亚洲欧美| 国产免费成人在线视频| 日韩主播视频在线| 99久久精品免费看国产| 日韩一区二区视频| 一区二区三区在线视频播放 | 精品国产自在久精品国产| 亚洲同性gay激情无套| 激情欧美一区二区| 欧美一区午夜精品| 亚洲国产精品综合小说图片区| 成人小视频免费观看| 欧美成va人片在线观看| 视频一区二区中文字幕| 欧美色综合久久| 一区二区三区不卡视频| 99热这里都是精品| 国产精品久久久久一区| 国产一区二区精品久久99| 日韩一二三区不卡| 欧美性感一类影片在线播放| 亚洲不卡一区二区三区| 在线观看日产精品| 亚洲成av人综合在线观看| 日本道色综合久久| 一区二区三区**美女毛片| 欧美日韩一区精品| 奇米精品一区二区三区在线观看一| 91精品久久久久久久91蜜桃| 日本91福利区| 国产亚洲综合在线| av中文字幕在线不卡| 亚洲色图制服丝袜| 欧美日韩国产另类一区| 免费成人在线网站| 久久精品网站免费观看| av资源站一区| 青青草原综合久久大伊人精品 | 久久精品日产第一区二区三区高清版| 国产毛片精品国产一区二区三区| 久久精品欧美一区二区三区麻豆| 91麻豆自制传媒国产之光| 丝袜美腿亚洲一区| 久久人人爽人人爽| 欧美午夜不卡视频| 国产美女一区二区| 一区二区三区色| 久久久久久一二三区| 欧美激情一区二区三区在线| 欧美中文字幕一区| 国产精品综合久久| 亚洲丶国产丶欧美一区二区三区| 久久无码av三级| 精品视频在线视频| 成人av在线看| 国产自产高清不卡| 手机精品视频在线观看| 亚洲天堂中文字幕| 国产欧美日韩三区| 欧美成人女星排行榜| 欧美日韩精品二区第二页| av在线不卡免费看| 国产成人精品亚洲午夜麻豆| 久久综合综合久久综合| 五月天激情小说综合| 亚洲精品国产视频| 亚洲手机成人高清视频| 国产午夜精品福利| 久久综合一区二区| 久久综合资源网| 日韩精品91亚洲二区在线观看| 中文字幕国产一区二区| 久久精品一区二区三区四区| 亚洲精品在线观| 久久久蜜桃精品| 久久综合久久综合久久综合| 日韩色在线观看| 欧美mv和日韩mv的网站| 欧美电视剧免费观看| 欧美成人a∨高清免费观看| 日韩女优av电影| 久久亚洲春色中文字幕久久久| 亚洲精品一区二区三区香蕉| 精品国产一二三区| 欧美国产精品劲爆| 国产精品你懂的在线| 亚洲欧美国产77777| 亚洲综合视频网| 免费在线观看成人| 国产福利电影一区二区三区| 97久久精品人人澡人人爽| 色婷婷国产精品| 一级女性全黄久久生活片免费| 亚洲一区二区不卡免费| 日韩成人伦理电影在线观看| 久久99精品国产.久久久久 | 欧美日韩aaa| 欧美mv日韩mv| 专区另类欧美日韩| 日韩av电影免费观看高清完整版| 国产乱子轮精品视频| 色综合天天综合给合国产| 91精品婷婷国产综合久久性色| 久久精品欧美一区二区三区不卡 | 欧美艳星brazzers| 久久中文娱乐网| 亚洲h动漫在线| av综合在线播放| 久久一区二区三区国产精品| 亚洲午夜三级在线| 大尺度一区二区| 欧美一区二区三区免费视频| 亚洲国产精品99久久久久久久久 | 亚洲精品乱码久久久久久黑人| 精品亚洲成a人| 88在线观看91蜜桃国自产| 亚洲人成7777| 波多野结衣欧美| 国产欧美日产一区| 欧美一区二区三区视频在线| 亚洲人成网站在线| 国产91精品一区二区麻豆网站 | 粉嫩绯色av一区二区在线观看| 日韩精品在线一区二区| 五月综合激情婷婷六月色窝| 欧美午夜精品免费| 亚洲精品国产一区二区精华液| av综合在线播放| 亚洲视频 欧洲视频| 99re热视频精品| 国产三级一区二区三区| 三级一区在线视频先锋 | 欧美日韩你懂得| 亚洲国产精品久久久男人的天堂 | 天天综合色天天综合色h| 欧美性生活大片视频| 精品一区二区三区在线观看| 国产精品色哟哟| 在线播放一区二区三区| 国产白丝精品91爽爽久久| 国产精品久久久久久亚洲伦| 99久久免费精品高清特色大片| 亚洲视频一二区| 精品视频999| 狠狠色丁香婷婷综合| 2欧美一区二区三区在线观看视频| 国产精品456露脸| 亚洲精品ww久久久久久p站| 欧美色图激情小说| 国产麻豆精品视频| 亚洲大片免费看| 精品88久久久久88久久久| 99久精品国产| 日本aⅴ免费视频一区二区三区| 久久久高清一区二区三区| 色久优优欧美色久优优| 老司机精品视频在线| 中文字幕一区在线| 日韩欧美中文字幕一区| 久久美女高清视频 | 欧美日韩大陆一区二区| 国产69精品久久久久777| 日本在线不卡视频一二三区| 中文字幕中文字幕在线一区| 欧美va亚洲va| 91精品综合久久久久久| 91国产免费看| 91麻豆福利精品推荐| 成人性生交大片| 国产不卡高清在线观看视频| 国产精一区二区三区| 国产高清亚洲一区| 国产美女精品在线| 国产成人综合亚洲91猫咪| 精品一区二区三区日韩| 看电视剧不卡顿的网站| 久久精品国产网站| 精品亚洲成a人在线观看| 久久99国产精品麻豆| 久久精品国产一区二区| 国产一区二区三区免费看| 韩国精品在线观看| av在线这里只有精品| 91美女福利视频| 欧美一区二区三区四区视频|