一方向の順序付きリストが空で重複ノードを削除し、重複ノードを保持していません

タイトル説明

ソートされたリンクリストのノードが重複して、重複したノードのリストを削除し、ノードが繰り返さ保持していない、ヘッド・ポインタ・リストを返します。例えば、リスト4-> 5が処理され> 2-> 3-> 3-> 4-> 1- 1-> 2-> 5
 
Baiduの後の牛のゲストエディター上のアルゴリズム自体他の人の行動によってビットを検索し、我々は2サイクルを解決するために使用されていることがわかった、私はまだ再実行することを好む、自分のアイデアを実行しましたが削除され、保持同じノードの練習を繰り返しますが、ノードの完了後に削除の繰り返しで、ノード自体、その後、削除して、比較していきますが、常に欠陥があると感じ、非常に不快探して、ネストされたループを探す必要はありません快適で、最初は来る掲載されています
* DeleteDuplication ListNode(ListNode * PHEAD)
    { 
        ListNode * P = PHEAD、* PF = NULL;
         int型の VAR 一方(P - && P> 次に){
             IF(P->ネクスト> P-ヴァル==> ヴァル){ 
                ListNode * = P-Q> 次に、
                P - > = Q-次> 次に、
                 フリー(Q);
                 VAR = P-> ヴァル; 
            } そうでなければ{
                 IF(P->ヴァル==のVAR){ // として重複を除去ノード識別
                    IF(!PF){ 
                        PHEAD = pHead-> 次。
                        無料(P); 
                        P = PHEAD。
                    } { 
                        PF - >次= P-> 次。
                        無料(P); 
                        P = PF-> 次。
                    } 
                } { 
                    PF = P。
                    P = P - > 次。
                } 
            } 
        }
//これは、最後のノードがより多くの判定処理動作を支払うので、ここでは、まだループ終了後に存在してもよいし、最後の重複ノードかもしれないので、冗長を見て、最も退屈な後ろに取り扱うが、本当に見ています非常に病気ああああ
IF(P - && P>ヴァル== VAR ){ IF(!{PF) PHEAD = pHead-> 次に、 フリー(P); P = PHEAD; } { PF - >次= P - > 次に、 フリー(P); P = PF-> 次に; } } 戻りPHEAD; }

 

おすすめ

転載: www.cnblogs.com/GuoYuying/p/11488676.html