Golang リンク リストの反転

WBOY
リリース: 2023-05-27 14:04:07
オリジナル
701 人が閲覧しました

golang Linked List Flip

コンピュータ サイエンスでは、リンク リスト (Linked List) は基本的なデータ構造です。リンクされたリストは一連のノードで構成され、各ノードにはデータ項目と次のノードへの参照が含まれます。リンク リストは、プログラム内でスタック、キュー、ハッシュ テーブルなどのデータ構造を実装するためによく使用されます。

リンクされたリストでは、各ノードは次のノードへの参照を持ちます。これにより、リンク リストは挿入および削除操作に最適になります。ただし、リンク リストの欠点の 1 つは、リンク リストの要素にアクセスするときに、リンク リスト全体を最初からたどる必要があるため、リンク リストへのアクセスが非常に複雑になることです。この問題を回避するには、各ノードが前のノードを指すようにリンク リストを再編成する必要があります。このようにして、リンク リスト全体をたどることなく、リンク リストの最後からアクセスできます。

リンク リストの反転は一般的なリンク リストの操作ですが、この記事では golang 言語を使用してリンク リストの反転を実装する方法を紹介します。

  1. リンク リスト ノード構造を定義する

まず、リンク リスト ノード構造を定義する必要があります。各ノードには、Value と Next の 2 つのプロパティが含まれています。

type ListNode struct {
    Value int
    Next  *ListNode
}
ログイン後にコピー

このうち、Value は現在のノードの値を格納するために使用され、Next は次のノードのアドレスを指すために使用されます。

  1. リンク リスト反転関数の実装

次に、リンク リスト反転関数を実装する必要があります。連結リスト反転関数は、連結リストの先頭ノードをパラメータとして受け取り、反転された連結リストの先頭ノードを返す必要があります。コードは次のとおりです。

func reverseList(head *ListNode) *ListNode {
    // 定义空节点和当前节点
    var prev *ListNode
    curr := head

    // 遍历整个链表
    for curr != nil {
        // 保存当前节点的下一个节点
        next := curr.Next

        // 将当前节点的Next指向前一个节点
        curr.Next = prev

        // 更新prev和curr
        prev = curr
        curr = next
    }

    // 返回翻转后的链表头节点
    return prev
}
ログイン後にコピー

この関数では、prev、curr、next の 3 つのポインターを使用します。 prev は反転されたノードを指し、curr は現在反転する必要があるノードを指し、next は curr の次のノードを指します。

リンクされたリスト全体を走査し、毎回 curr の Next を prev にポイントし、prev と curr を更新します。最後に、リンクされたリストの反転されたヘッド ノード (つまり、prev ノード) を返します。

  1. 完全なコード

完全な golang コードは次のとおりです:

type ListNode struct {
    Value int
    Next  *ListNode
}

func reverseList(head *ListNode) *ListNode {
    // 定义空节点和当前节点
    var prev *ListNode
    curr := head

    // 遍历整个链表
    for curr != nil {
        // 保存当前节点的下一个节点
        next := curr.Next

        // 将当前节点的Next指向前一个节点
        curr.Next = prev

        // 更新prev和curr
        prev = curr
        curr = next
    }

    // 返回翻转后的链表头节点
    return prev
}
ログイン後にコピー

上記のコードを通じて、リンク リストの反転関数を正常に実装しました。実際のアプリケーションでは、リンク リストの反転は通常、文字列の反転、配列の反転など、いくつかの問題を解決するために使用されます。リンクリストの操作スキルを習得することは、効率的で安定したプログラムを作成するために非常に重要です。

以上がGolang リンク リストの反転の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート