Golangでリストを逆にする方法は何ですか?

「Golangでは、リストを反転させるために、反復と再帰の2つの方法が使える。」

  1. 迭代法はリンクリストを巡回し、ポインターを1つずつ変更してリンクリストを反転させる方法です。
  2. 型ListNodeを定義します:
    type ListNode struct {
    Val int
    Next *ListNode
    }func reverseList(head *ListNode) *ListNode {
    var prev *ListNode
    curr := head
    for curr != nil {
    next := curr.Next
    curr.Next = prev
    prev = curr
    curr = next
    }
    return prev
    }
  3. 再帰的手法:
    再帰的手法は、再帰的にリストのサブリストを反転させ、隣接するノードのポインタを変更することで、リストを反転させる手法です。
  4. ListNode構造体は、ValとNextポインタを持っています。func reverseList(head *ListNode) *ListNode {
    if head == nil || head.Next == nil {
    return head
    }
    newHead := reverseList(head.Next)
    head.Next.Next = head
    head.Next = nil
    return newHead
    }

どの方法を使用しても、リストが空であるか、一つのノードしかない場合、または反復法で次のノードへの参照を常に保持することに注意する必要があります。

bannerAds