Golang程序 访问linked list中的元素

Golang程序 访问linked list中的元素

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

方法一:使用迭代法

这个程序建立了一个有三个成员的链表,通过迭代来访问和输出每个元素的值。输出的结果将是一个带有预定义元素的链表。让我们看看代码和算法来理解这个概念。

算法

  • 第1步 – 创建一个包main,并在程序中声明fmt(format package)包,其中main产生可执行代码,fmt帮助格式化输入和输出。

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

  • 第3步 – 在主函数中创建一个值为1的头部节点。

  • 第 4步 – 设置一个新的节点,其值为2,作为头部节点的下一个字段。

  • 第 5 步–设置一个新的节点,其值为3,作为第二个节点的下一个字段。

  • 第6步 – 用你刚刚创建的变量节点的值来设置头部节点。

  • 第 7步 – 使用for循环遍历链接列表。循环将继续进行,直到节点变量等于nil,根据循环条件node!=nil,这表示链接列表的结束。

  • 第8步 – 使用fmt.Println(node.value_num)在循环的主体中打印当前节点的值。

  • 第 9步 – 使用node = node.next来更新node变量到链接列表中的后续节点。

  • 第 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达到0时,链接列表就被认为达到了终点。

算法

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

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

  • 第3步 – 在主函数中创建一个值为10的头部节点。

  • 第 4步 – 设置一个新的节点,其值为20,作为头部节点的下一个字段。

  • 第 5 步–设置一个新的节点,其值为30,作为第二个节点的下一个字段。

  • 第6步 – 设置头部节点为变量电流的等值。

  • 第 7步 – 使用for循环遍历链表。由于链接列表的结束是由条件语句current!=nil表示的,循环将继续运行,直到当前变量等于nil。

  • 第8步 – 使用fmt.Println(current.value)在循环的主体中打印当前节点的值。

  • 第 9步 – 使用current = current,将当前变量移动到链表的下一个节点。

  • 第 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:")
   current := head
   for current != nil {
      fmt.Println(current.value_num)
      current = current.next
   }
}

输出

Accessing elements of linked list:
10
20
30

总结

我们用两个例子执行了访问链表元素的程序。在第一个例子中,我们对链接列表进行了迭代,在第二个例子中,我们使用一个当前变量对链接列表进行了迭代。这两个程序都给出了类似的输出。因此,该程序成功执行。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程