重複した二重リンクリストを削除するアルゴリズムを設計

typedef 構造体ノード{
 構造体ノード*次に、* プレ;
 INT データ; 
} DSLink、
無効 intiDSLink(DSLink *&L、INT * A、int型L){ 

        // 第1のノードを作成 
        L =(DSLink *)はmallocはsizeofを(DSLink )); 
        L - > L-次に=>予備= NULL; 
        DSLink * S * プレ;
         // ノードを作成
        するためのint型 I = 0を Iは、Lを<; Iは++ ){
                 // 第1の補間方法 
                S =(DSLinkを*)のmallocsizeof(DSLink)); //は、メモリ空間を割り当て 
                、S->データ= A [I] // 割り当て 
                ; S-> L =プリ// ノードの前のノードに前方ポインタ点 
                S->次= L- >次に; // ノードの前のノードへのポインタ 
                L->次に= S; // 接合
        } 
        DSLink * = L-次に>次に、* = L-T> 次に、

        // 出力
        しながら( !次に= NULL){ 
                COUT <<ネクスト>データ<< "  " ; 
                次に =ネクスト> 次に; 
        } 
        // 重複を削除し、破壊 
        次に= L-> 次に、
        予備 = L。
        一方、(!次= NULL){
                 場合(プレ>データ==ネクスト> データ){
                         // 删除相等元素 
                        プレ>次=ネクスト> 次。 - >ネクスト>前= 前; 
                        裁判所未満 << " 删除" <<ネクスト>データ<< "  " ;
                        // 释放结点
                        無料(次の);  =プレ> 次。
                } { = 次; 
                        次回 =ネクスト> 次; 
                } 
        } 
        // 输出 
        DSLink * N = T。
        一方、(N!= NULL){ 
                COUT << N->データ<< "  " 
                N = N> 次。
        } 


}

 

 

おすすめ

転載: www.cnblogs.com/webcyh/p/11359852.html