Go语言程序遍历循环链表并打印其元素
在本文中,我们将了解如何创建一个 Go 语言程序来遍历循环链表并使用简单的 for 和 while 循环打印其元素。循环链表是一种数据结构,其中列表的最后一个元素连接到第一个元素,形成一个循环。
算法
步骤 1 − 首先,我们需要导入 fmt 包。此结构包含一个数据变量用于存储数据以及一个指针变量用于存储下一个节点的地址。
步骤 2 − 然后创建一个名为 Traverse() 的函数来遍历列表的元素。此函数使用 for 循环打印相应的元素。
步骤 3 − 现在,创建 main() 函数。在 main() 内部,为名为 head 的结构体创建一个节点,并为其赋值。
步骤 4 − 以这种方式创建多个节点,方法是将下一个节点的地址放置到 head 节点的 next 指针中,并将不同的值分配给所有这些节点的数据变量。
步骤 5 − 要遍历此列表,请通过将 head 节点作为参数传递给函数来调用 traverse() 函数,并在屏幕上以循环方式打印列表的元素。
示例 1
在本例中,我们将编写一个 Go 语言程序来遍历循环链表并使用 for 循环打印其元素。这是遍历循环链表最简单的方法。在这里,我们将从列表的头部开始,并迭代循环,直到再次到达头部。
package main
import "fmt"
type Node struct {
data int
next *Node
}
func traverseCircularList(head *Node) {
current := head
elem := current.data
for {
fmt.Printf("%d ", current.data)
current = current.next
if current == head {
break
}
}
fmt.Println(elem)
}
func main() {
head := &Node{data: 10}
head.next = &Node{data: 20}
head.next.next = &Node{data: 30}
head.next.next.next = head
fmt.Println("The elements obtained by traversing over the circular linked list are:")
traverseCircularList(head)
}
输出
The elements obtained by traversing over the circular linked list are: 10 20 30 10
示例 2
在本例中,我们将编写一个 Go 语言程序来通过 while 循环遍历循环链表。
package main
import "fmt"
type Node struct {
data int
next *Node
}
func traverseCircularList(head *Node) {
if head == nil {
return
}
fmt.Println("The elements of the circular linked list are:")
current := head
for current.next != head {
fmt.Printf("%d ", current.data)
current = current.next
}
fmt.Printf("%d ", current.data)
}
func main() {
head := &Node{data: 11}
head.next = &Node{data: 12}
head.next.next = &Node{data: 13}
head.next.next.next = head
traverseCircularList(head)
}
输出
The elements of the circular linked list are: 11 12 13
结论
我们已经成功编译并执行了一个 Go 语言程序,用于遍历循环链表并在屏幕上打印其元素,以及示例。我们在本文中使用了两个程序。在第一个程序中,我们使用 for 循环,而在第二个程序中,我们使用 while 循环来实现结果。所有三种方法都非常有效且易于实现,方法的选择取决于个人喜好和编码风格。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP