golang配列をリンクリストに変換

PHPz
リリース: 2023-05-14 16:18:37
オリジナル
588 人が閲覧しました

Golang は、データ構造が柔軟で多様で、操作が簡単な効率的なプログラミング言語です。 Golang では、配列とリンク リストが一般的に使用されるデータ構造です。配列は線形構造ですが、リンク リストは非線形構造です。場合によっては、データの処理を容易にするために配列をリンク リストに変換する必要があります。この記事では、Golangで配列をリンクリストに変換する方法を紹介します。

1. 配列とリンク リストの違い

配列とリンク リストはどちらもデータ セットを格納する方法ですが、両者の間には大きな違いがあります。これらの違いを簡単に紹介します。

  1. 配列は、添え字を通じて要素にランダムにアクセスできる、連続した固定サイズのデータ​​構造です。リンク リストは、要素がポインタを介してリンクされている、不連続で動的にサイズ変更されるデータ構造です。
  2. 配列は連続したメモリ空間を占有し、添字を介した要素へのアクセスは非常に高速ですが、リンク リストはポインタを介して要素をリンクし、最初の要素を除いて要素にランダムにアクセスできないため、アクセス速度が遅くなります。
  3. 配列の挿入および削除操作はより難しく、他の要素を移動する必要があり、時間計算量は O(n) です。リンク リストはポインターを介して要素をリンクし、挿入および削除操作を行います。の方が便利で、時間計算量は O( 1) です。

2. 配列をリンク リストに変換する

Golang で配列をリンク リストに変換するには、次の手順を使用できます。 # リンクリストのノードタイプを定義します。

  1. // リンク リスト ノード タイプを定義します。
  2. type ListNode struct {
Val int
Next *ListNode
ログイン後にコピー

}

ここでは、ノードを含むリンク リスト ノード タイプを定義します。値と次のノードへのポインタ。

リンクされたリストを作成します。

  1. // 配列をリンク リストに変換します
  2. func arrayToList(nums []int) *ListNode {
var head *ListNode
// 遍历数组
for i := len(nums) - 1; i >= 0; i-- {
    // 创建链表节点
    node := &ListNode{nums[i], nil}
    node.Next = head // 将新节点链接到链表头
    head = node      // 将新节点设置为链表头
}
return head
ログイン後にコピー

}

このコードは、配列はリンクされたリストです。まず、リンクされたリストの head ノード head を定義し、それを nil に初期化します。次に、配列を反復処理して、各ノードを順番に作成し、それをリンク リストの先頭にリンクします。最後に、リンクされたリストのヘッド ノードを返します。

テストコード。

  1. func main() {
  2. nums := []int{1, 2, 3, 4, 5}
    head := arrayToList(nums)
    
    for head != nil {
        fmt.Print(head.Val, " ")
        head = head.Next
    }
    ログイン後にコピー
    }

    上記のコードを使用して、配列をリンク リストに変換した結果をテストできます。ここでは、配列 [1,2,3,4,5] を定義し、リンク リストに変換します。次に、リンク リストを走査して、各ノードの値を出力します。

    3. 概要

    Golang では、配列をリンク リストに変換すると、データをより便利に処理できます。上記のメソッドでは、リンク リストのノード タイプを定義し、配列を走査して各ノードをリンク リストの先頭にリンクすることにより、配列をリンク リストに変換します。上記の手順により、配列をリンク リストに簡単に変換でき、便利な挿入や削除操作など、リンク リストによってもたらされる利便性を享受できます。

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

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