Golang は、データ構造が柔軟で多様で、操作が簡単な効率的なプログラミング言語です。 Golang では、配列とリンク リストが一般的に使用されるデータ構造です。配列は線形構造ですが、リンク リストは非線形構造です。場合によっては、データの処理を容易にするために配列をリンク リストに変換する必要があります。この記事では、Golangで配列をリンクリストに変換する方法を紹介します。
1. 配列とリンク リストの違い
配列とリンク リストはどちらもデータ セットを格納する方法ですが、両者の間には大きな違いがあります。これらの違いを簡単に紹介します。
- 配列は、添え字を通じて要素にランダムにアクセスできる、連続した固定サイズのデータ構造です。リンク リストは、要素がポインタを介してリンクされている、不連続で動的にサイズ変更されるデータ構造です。
- 配列は連続したメモリ空間を占有し、添字を介した要素へのアクセスは非常に高速ですが、リンク リストはポインタを介して要素をリンクし、最初の要素を除いて要素にランダムにアクセスできないため、アクセス速度が遅くなります。
- 配列の挿入および削除操作はより難しく、他の要素を移動する必要があり、時間計算量は O(n) です。リンク リストはポインターを介して要素をリンクし、挿入および削除操作を行います。の方が便利で、時間計算量は O( 1) です。
2. 配列をリンク リストに変換する
Golang で配列をリンク リストに変換するには、次の手順を使用できます。 # リンクリストのノードタイプを定義します。
- // リンク リスト ノード タイプを定義します。
type ListNode struct {
Val int
Next *ListNode
ログイン後にコピー
}
ここでは、ノードを含むリンク リスト ノード タイプを定義します。値と次のノードへのポインタ。
リンクされたリストを作成します。
- // 配列をリンク リストに変換します
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 に初期化します。次に、配列を反復処理して、各ノードを順番に作成し、それをリンク リストの先頭にリンクします。最後に、リンクされたリストのヘッド ノードを返します。
テストコード。
- func main() {
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 サイトの他の関連記事を参照してください。