反転アルゴリズムリストのタイトル

単独リンクリストを逆にします。

例:

入力: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。 ) 

おすすめ

転載: www.cnblogs.com/wangjing666/p/11322913.html