Golang 链表实现程序


2022 年 3 月 8 日, Learn eTutorial
2395

什么是链表?

链表 (LL) 是像数组一样基本且线性的数据结构之一。它包含一堆节点,每个节点包含数据和一个指向下一个节点的指针。 链表中的所有元素都通过 指针 连接。

Linked List

如何在 Golang 中实现链表?

在这个 Go 程序中,Head 是链表的起始节点,它指向下一个节点。它将继续生成链表节点,因为前一个节点将存储下一个节点的地址。最后,最后一个节点的指针指向 NULL 值。

让我们通过一个例子来看看,考虑 4 个数字 100、20、40、70,我们将它们构成链表的节点。

  • 插入第一个节点,它是链表的 HEAD,将包含数据 100 和一个指向下一个节点的指针。
  • 插入第二个节点,数据为 20,并指向下一个节点。
  • 插入第三个节点,数据为 40,并指向下一个节点。
  • 插入第四个节点,数据为 70,并指向 NULL,因为没有更多节点可插入。
Linked List Example

一个 struct 数据类型可以用来创建一个链表节点,它将包含一个整数值和一个指向下一个节点的指针。接下来,我们需要一个函数来生成一个新节点,为其变量赋值,并将该节点附加到链表。另一个函数用于从头到尾遍历并借助循环打印值。

Go 中的库函数将帮助我们实现此程序,为此我们需要在程序开始时导入 fmt 。在 main 函数中,我们可以调用我们用户定义的函数来创建节点和遍历链表。

算法

步骤 1:开始
步骤 2:定义节点的结构
步骤 3:通过调用函数 NewNode(value)head 指定为起始节点
步骤 4:通过调用函数 NewNode(value) 创建链表,使前一个节点存储下一个节点的地址。
步骤 5:调用函数 TraverseLinkedList(head)
步骤 6:退出

实现函数 NewNode(value int) 的步骤

步骤 1:声明变量 n 为 Node 类型。
步骤 2:通过将数据分配给节点值并将节点的指针更改为 nil 来创建节点 n
步骤 3:返回节点 n

实现 TraverseLinkedList(head *Node) 的步骤

步骤 1:通过遍历从 head 开始直到找到引用值为 NULL 的列表,显示链表中的所有节点。


链表实现程序使用以下 GO 编程主题,请参考这些主题以获得更好的理解。

Golang 源代码

                                          package main
import "fmt"
type Node struct {
   value int
   next *Node
}
func NewNode(value int) *Node{
   var n Node
   n.value = value
   n.next = nil
   return &n
}
func TraverseLinkedList(head *Node){
   fmt.Printf("Linked List: ")
   temp := head
   for temp != nil {
      fmt.Printf("%d -> ", temp.value)
      temp = temp.next
   }
   fmt.Printf("NULL")
}
func main(){
   head := NewNode(100)
   head.next = NewNode(20)
   head.next.next = NewNode(40)
   head.next.next.next = NewNode(70)
   TraverseLinkedList(head)
}

                                      

输出

Linked List: 100 -> 20 -> 40 -> 70 -> NULL