タイトル説明
ソートされたリンクリストが重複ノードリストを削除し、重複ノードにおいて、ノードは、繰り返しを保持しない、ヘッド・ポインタ・リストを返します。例えば、リスト1-> 2-> 3-> 3-> 4-> 4-> 5扱われ1-> 2-> 5
1著:
cur->次及びcur->ネクスト>次の値が新しいNEXへのポインタは、振り返ってみるされた中継ノードを見つけるために記載したのと同じである場合、値になるまで、現在横断ノードをCURノードvalを繰り返す前の値に等しくありません。CURとNEXへのリンクへ。
以下のような1,2,2,2,3
CURトラバース1には、2つのノードがCUR 2の後に、その後、すべての方法のバックを使用すると、2のすべてのノードの値を削除したのでこと、3、1と3が一緒に接続されるNEX見つけることです。
1 / * 2 構造体ListNode { 3 int型のval; 4 次構造体ListNode *; 5 ListNode(INT X): 6 のval(x)は、次の(NULL){ 7 } 8 }。 9 * / 10 クラスソリューション{ 11 公共: 12 ListNode * deleteDuplication(ListNode * PHEAD) 13 { 14 オートダミー= 新しいListNode(INT_MIN)。 15 dummy->次= PHEAD。 16 自動CUR = ダミー。 17 一方、(cur->次及びcur->ネクスト> 次){ 18 であれば(cur->ネクスト>ヴァル== cur->ネクスト>ネクスト> ヴァル){ 19 オートNEX = cur-> 次。 20 INTの TEMP = cur->ネクスト> ヴァル。 21 一方(NEXとnex->ヴァル== TEMP){ 22 NEX = nex-> 次。 23 } 24 cur->次= NEX。 25 } 26 他{ 27 CUR = cur-> 次。 28 } 29 } 30 リターン dummy-> 次。 31 } 32 }。
2執筆:
1 / * 2 構造体ListNode { 3 int型のval; 4 次構造体ListNode *; 5 ListNode(INT X): 6 のval(x)は、次の(NULL){ 7 } 8 }。 9 * / 10 クラスソリューション{ 11 公共: 12 ListNode * deleteDuplication(ListNode * PHEAD) 13 { 14 オートダミー= 新しいListNode(INT_MIN)。 15 dummy->次= PHEAD。 16 自動final_unique =ダミー、CUR = PHEAD、予め=ダミー; 17 ながら(CUR){ 18は IF(CUR>次に及びCUR>ヴァルCUR ==>ネクスト> ヴァル){ 19。 ながら(CUR>次に及びCUR>ヴァルCUR ==>ネクスト> ヴァル){ 20は、 CUR = CUR> 次に、 21である } 22は、 // ケースcurが最後の中継ノードである 23である } 24 他{ 25 final_unique->次に= CUR、 26である final_unique = CUR; 27 } 28 CUR = CUR > 次に、 29 } 30 final_unique->次= nullptr。 31 リターン dummy-> 次。 32 } 33 }。