タイトル説明
ソートされたリンクリストのノードが重複して、重複したノードのリストを削除し、ノードが繰り返さ保持していない、ヘッド・ポインタ・リストを返します。例えば、リスト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; }