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。這兩個程式都給出了類似的輸出。因此,程式執行成功。

更新於: 2023年2月20日

311 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告