トライ達成

書式#include <iostreamの> 
の#include < 文字列 > 
の#include <アルゴリズム>
 使用して 名前空間はstdを、
クラスノード{
     パブリック
        ノード *次の[ 26 ]。
        ブールisend。
        ノード(){ 
            ためint型 i = 0 ; iは< 26 ; I ++ ){ 
                次の[I] = NULL; 
            } 
            isend = 
        }
        ノード(){} 
    }。
クラストライ{
 パブリック/ * *ここにあなたのデータ構造を初期化します。* / 
    ノード * ルート。
    トライ(){ 
        ルート = 新しいノード()。
    } 

    / * *トライにワードはinsts。* / 
    ボイド工大(文字列ワード){ 
        ノード *はP = ルート。
        以下のためにint型 i = 0 ; iは<)(word.sizeと、iは++ ){
             場合(P-!>次の[単語を[I] - [ A ' ])
                P - >次の[単語[I] - [' ] = 新しいノード()。
            P = P->次の[単語[I] - ' ' ]。
        } 
        P - > isend = 
    } / * 単語がトライしている場合は*を返します。* / BOOL SE(文字列ワード){ 
        ノード *はP = ルート。
        以下のためにint型私= 0 ;私は<)(word.sizeを、私は++ ){
             場合(!p型>次の[単語を[i]は- ' A ' ])
                 を返す
            のpを

    
      = P->次の[単語[I] - ' ' ]。
        } 戻り P-> isend。
    } / * *指定された接頭辞で始まるトライで任意の単語がある場合を返します。* / BOOLのstartsWith(文字列の接頭辞){ 
        ノード *はP = ルート。
        以下のためにint型私= 0 ;私は<)(prefix.sizeを、私は++ ){
             場合(!p型>次の[プレフィックスを[i]は- ' A ' ])
                 を返す
            P = P->次の[プレフィックス[I] -
        

    
     ' A" ]; 
        } 
        を返す 
    } 
}。
int型メイン(無効){ 
    トライ *トライ= 新しいトライ(); 
    トライ - > instを(" りんご" ); 
    coutの << trie-> SE(" りんご")<< '  ' ;   // 返回真 
    coutの<< trie-> SE(" アプリ")<< '  ' ;     // 返回偽 
    coutの<< trie->のstartsWith("'  ' ; // 返回真 
    trie->研(" アプリ" )。
    coutの << trie-> SE(" アプリ")<< '  ' ;     // 返回真
    の戻り 0 ; 

} 
/ * * 
 *あなたのトライ・オブジェクトがインスタンス化され、そのように呼ぶことにする:
 *トライ* OBJ =新しいトライ()。
 * obj->研(ワード)。
 * BOOL PARAM_2 = obj-> SE(ワード)
 * BOOL param_3 = obj->のstartsWith(接頭辞)。
 * /

 

おすすめ

転載: www.cnblogs.com/programyang/p/11279937.html