Go語言程式訪問連結串列元素
在 Go 程式語言中,連結串列是一種資料結構,它包含一個節點,該節點進一步包含兩個值:資料和下一個,其中下一個指向列表中的下一個節點。我們將在此程式中使用兩種方法來訪問連結串列中的元素。在第一個示例中將使用迭代,在第二個示例中將使用變數 current 來訪問元素。
方法 1:使用迭代
此程式構建了一個包含三個成員的連結串列,並遍歷它以訪問和輸出每個元素的值。輸出將是一個包含預定義元素的連結串列。讓我們看看程式碼和演算法以瞭解這個概念。
演算法
步驟 1 − 建立一個包 main 並宣告 fmt(格式包)包在程式中,其中 main 生成可執行程式碼,fmt 幫助格式化輸入和輸出。
步驟 2 − 建立一個 Node 結構體,它有兩個欄位:value_num 和 next,每個欄位都包含一個指向連結串列中下一個節點的指標。Value 包含資料。
步驟 3 − 在 main 函式中建立一個值為 1 的頭節點。
步驟 4 − 設定一個值為 2 的新節點作為頭節點的 next 欄位。
步驟 5 − 設定一個值為 3 的新節點作為第二個節點的 next 欄位。
步驟 6 − 將您剛剛建立的變數 node 的值設定為頭節點。
步驟 7 − 使用 for 迴圈遍歷連結串列。根據迴圈條件 node!= nil,迴圈將繼續,直到節點變數等於 nil,這表示連結串列的結束。
步驟 8 − 使用 fmt.Println(node.value_num) 在迴圈體中列印當前節點的值。
步驟 9 − 使用 node = node.next 將節點變數更新為連結串列中的後續節點。
步驟 10 − 重複步驟 6 到 8,直到連結串列結束。
示例
在這個示例中,我們將使用迭代來訪問連結串列的元素。讓我們透過程式碼來了解。
package main import "fmt" // Node represents a node in a linked list type Node struct { value_num int next *Node } //create main function to execute the program func main() { head := &Node{value_num: 10} head.next = &Node{value_num: 20} head.next.next = &Node{value_num: 30} // Accessing elements from linked list fmt.Println("Accessing elements of linked list:") node := head for node != nil { fmt.Println(node.value_num) node = node.next } }
輸出
Accessing elements of linked list: 10 20 30
方法 2:使用 Current 變數
此方法的行為類似於之前討論的方法,這裡我們只使用一個變數 current 而不是節點來遍歷連結串列。在連結串列中,變數 current 從頭開始,並在每次迭代後更新以引用後續節點。當 current 達到零時,表示連結串列已到達其結束。
演算法
步驟 1 − 建立一個包 main 並宣告 fmt(格式包)包在程式中,其中 main 生成可執行程式碼,fmt 幫助格式化輸入和輸出。
步驟 2 − 建立一個 Node 結構體,它有兩個欄位:value_num 和 next,每個欄位都包含一個指向連結串列中下一個節點的指標。Value 包含資料。
步驟 3 − 在 main 函式中建立一個值為 10 的頭節點。
步驟 4 − 設定一個值為 20 的新節點作為頭節點的 next 欄位。
步驟 5 − 設定一個值為 30 的新節點作為第二個節點的 next 欄位。
步驟 6 − 將頭節點設定為變數 current 的值。
步驟 7 − 使用 for 迴圈遍歷連結串列。由於條件語句 current!= nil 指示連結串列的結束,因此迴圈將持續執行,直到當前變數等於 nil。
步驟 8 − 使用 fmt.Println(current.value) 在迴圈體中列印當前節點的值。
步驟 9 − 使用 current = current 將當前變數移動到連結串列中的後續節點。
步驟 10 − 重複步驟 6 到 8,直到連結串列結束。
示例
在這個示例中,我們將使用迭代中的 current 變數。
package main import "fmt" // Node represents a node in a linked list type Node struct { value_num int next *Node } //create main function to execute the program func main() { head := &Node{value_num: 10} head.next = &Node{value_num: 20} head.next.next = &Node{value_num: 30} // Accessing elements from linked list fmt.Println("Accessing elements of linked list:") current := head for current != nil { fmt.Println(current.value_num) current = current.next } }
輸出
Accessing elements of linked list: 10 20 30
結論
我們使用兩個示例執行了訪問連結串列元素的程式。在第一個示例中,我們遍歷了連結串列,在第二個示例中,我們使用了一個 current 變數來遍歷 LinkedList。這兩個程式都給出了類似的輸出。因此,程式執行成功。