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。这两个程序都给出了类似的输出。因此,程序执行成功。