Golang 访问链表中的元素

Golang 访问链表中的元素

在Go编程语言中,链表是一种数据结构,它包含一个节点,该节点进一步包含两个值,即数据和下一个节点的指针,其中下一个指向链表中的下一个节点。本程序将使用两种方法来访问链表中的元素。 第一个示例将使用迭代法,第二个示例将使用变量current来访问元素。

方法1:使用迭代法

此程序构建了一个具有三个成员的链表,并遍历该链表以访问和输出每个元素的值。 输出将是一个具有预定义元素的链表。让我们来看看代码和算法以理解这个概念。

步骤

  • 第1步 - 创建一个包main并在程序中声明fmt(格式化包)包,其中main生成可执行代码,fmt用于格式化输入和输出。

  • 第2步 - 创建一个Node结构,其中包含两个字段value_num和next,每个字段都包含指向链表中下一个节点的指针。 value_num包含数据。

  • 第3步 - 在main函数中创建一个具有值1的头节点。

  • 第4步 - 将一个具有值2的新节点设置为头节点的下一个字段。

  • 第5步 - 将一个具有值3的新节点设置为第二个节点的下一个字段。

  • 第6步 - 使用刚刚创建的变量节点的值来设置头节点的值。

  • 第7步 - 使用for循环遍历链表。循环将在节点变量等于nil(表示链表末端)时继续,根据循环条件node!= 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达到零时,链表被认为达到了结尾。

步骤

  • 步骤1 - 在程序中创建一个名为main的包,并声明fmt(格式化包)包。main包生成可执行代码,而fmt包在格式化输入和输出时起到帮助作用。

  • 步骤2 - 创建一个Node结构体,包含两个字段:value_num和next,每个字段都包含一个指向链表中下一个节点的指针。Value包含数据。

  • 步骤3 - 在main函数中创建一个值为10的头节点。

  • 步骤4 - 将一个值为20的新节点设置为头节点的下一个节点。

  • 步骤5 - 将一个值为30的新节点设置为第二个节点的下一个节点。

  • 步骤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

结论

我们执行了使用两个示例访问链表元素的程序。在第一个示例中,我们通过遍历链表来执行,在第二个示例中,我们使用了一个当前变量来遍历LinkedList。两个程序都给出了相似的输出。因此,程序成功执行。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程