Go語言程式:連結串列與陣列的相互轉換
在Go程式語言中,連結串列是一種由一系列節點組成的動態資料結構,每個節點包含一個值和指向下一個節點的引用(指標)。連結串列允許在不重新排列整個資料集的情況下新增或刪除專案,提供了一種動態且靈活的資料儲存方式。Go語言中可以使用結構體和指標來實現連結串列,而陣列是大小固定的同類型元素的集合,可以透過其整數索引(從零開始)訪問。陣列的大小在宣告時確定,之後無法更改。
方法一:將連結串列轉換為陣列
在此方法中,我們使用節點結構體將連結串列轉換為陣列。連結串列中的值被設定並轉換為使用make函式建立的陣列。迴圈遍歷連結串列,並將元素新增到陣列中,然後使用fmt包在控制檯上列印。
演算法
步驟1 − 建立一個名為main的包,並在程式中宣告fmt(格式化包),其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。
步驟2 − 建立一個名為node的結構體,包含型別為int的val和型別為Node的next。
步驟3 − 建立一個名為array的空陣列。
步驟4 − 建立一個名為curr的指標,並將其初始化為連結串列的頭節點。
步驟5 − 當curr不為空時,使用curr.next迴圈。
步驟6 − 將陣列返回到連結串列。
示例
在此示例中,我們將連結串列轉換為陣列。
package main
import "fmt"
type Node struct {
val int
next *Node
}
func main() {
// Creating linked list
head := &Node{val: 10, next: &Node{val: 20, next: &Node{val: 30, next: nil}}}
// Converting linked list to an array
array := make([]int, 0)
for curr := head; curr != nil; curr = curr.next {
array = append(array, curr.val)
}
fmt.Println("The linked list is converted into array:")
fmt.Println("Linked List:", array)
}
輸出
The linked list is converted into array: Linked List: [10 20 30]
方法二:將陣列轉換為連結串列
在此方法中,我們藉助函式array_to_List將陣列轉換為連結串列,該函式將執行一個迴圈並返回頭節點值。連結串列將使用fmt包在控制檯上列印。
演算法
步驟1 − 建立一個名為main的包,並在程式中宣告fmt(格式化包),其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。
步驟2 − 建立一個名為head的頭節點,其值為陣列的第一個元素。
步驟3 − 建立一個名為curr的指標,並將其初始值設定為head。然後,迭代陣列的其餘元素。
步驟4 − 新增一個新節點newNode,其值為當前元素。
步驟5 − 將curr指標移動到newNode。
步驟6 − 在下一步中,將head返回給函式。
示例
在此示例中,我們將陣列轉換為連結串列。
package main
import "fmt"
type Node struct {
val int
next *Node
}
func array_to_List(array []int) *Node {
head := &Node{val: array[0], next: nil}
curr := head
for i := 1; i < len(array); i++ {
curr.next = &Node{val: array[i], next: nil}
curr = curr.next
}
return head
}
func main() {
// Creating array
array := []int{10, 20, 30}
// Converting array to linked list
head := array_to_List(array)
// Printing linked list
fmt.Println("The array after its converted to linked list:")
for curr := head; curr != nil; curr = curr.next {
fmt.Print(curr.val, " -> ")
}
fmt.Print("nil")
}
輸出
The array after its converted to linked list: 10 -> 20 -> 30 -> nil
結論
我們透過兩個示例執行了連結串列與陣列相互轉換的程式。在第一個示例中,我們使用將連結串列轉換為陣列,在第二個示例中,我們將陣列轉換為連結串列。兩個程式都生成了預期的輸出。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP