逆リンクリスト
説明:単一リンクリストを逆にします。
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
この記事では、反復法を使用してリンクリストを逆にします。
基本的な考え方:トラバースするときは、現在のノードの次のノードを前のノードにポイントします
。
- 一方向リンクリストのため、前のノードのアドレスは不明です
- 現在のノードの次の値を変更すると、後続のノードのアドレスが失われます
解決:
- prevポインタとcurポインタを使用して、それぞれ先行ノードと現在ノードをポイントします
- 後続のノードのアドレスをnextTempに格納します
プロセスは次の図に示され(3つのノードのみがリストされています)、
コードは次のとおりです。
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode cur = head;
while(cur != null){
ListNode nextTemp = cur.next;
cur.next = prev;
prev = cur;
cur = nextTemp;
}
return prev;
}
}
複雑さの分析:
時間の複雑さ:O(n)
空間の複雑さ:O(1)