Likou 206_Reverse Linked List

逆リンクリスト

説明:単一リンクリストを逆にします。

输入: 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)

おすすめ

転載: blog.csdn.net/Yungang_Young/article/details/112605180