単独リンクリストを逆にします。
例:
入力:1-> 2-> 3-> 4- > 5-> NULLの 出力:5-> 4-> 3-> 2- > 1-> NULL
高度:
あなたは、反復逆転または再帰的に一覧表示することができます。次の2つの方法でこの問題を解決することはできますか?
ソリューション
方法の一つ:反復
リンクリストが存在すると仮定すると 1 → 2 → 3 → Ø
、我々はそれを変更したいです Ø ← 1 ← 2 ← 3
。
リストを横断するとき、現在のノードの next
ポインタは、前の要素を指すように。要素の前に予め記憶されなければならない基準ノードでないノードからです。参照を変更する前に、他のポインタは、次のノードを格納するために必要な。最後に、参照の新しいヘッドを返すことを忘れないでください!
公共ListNode reverseList(ListNodeヘッド){ ListNode PREV = NULL; ListNode CURR =ヘッド。 (!CURR = NULL){一方 ListNode nextTemp = curr.next。 curr.next = PREV。 PREV = CURR。 CURR = nextTemp。 } 戻りPREV。 }
複雑性分析
-
時間の複雑さ:O(N-)O (N- )。仮定 N- n型であり、リストの長さは、時間計算量は O(N)O (N- )。
-
宇宙複雑:O(1)O (1。 )