Golang程序 添加元素到一个linkedlist中

Golang程序 添加元素到一个linkedlist中

在 Golang 中,我们可以使用节点结构和链接表结构来向链接表添加元素。链接表是一个由一系列节点组成的数据结构,每个节点都包括一个元素和对序列中后面节点的引用。它是一个线性数据结构,用指针连接各个项目,从第一个节点(头)到最后一个节点,每个节点都可以被访问(尾)。与需要对所有元素进行移位的数组相反,链接列表只需要改变相邻节点的指针,这使得它们在需要经常和动态地添加或撤回数据的情况下很有帮助。

方法1:使用Node结构

在这种方法中,链接列表被显示为一个节点链,每个节点由一个值和一个指向列表中它后面的节点的指针组成。add_node函数通过使用对列表头部的引用和一个值,在列表的末尾添加一个持有该值的新节点。主函数提供了在列表中遍历和添加成员的例子。

算法

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

  • 第2步– 创建一个节点结构,有一个整数值和一个指向下面节点的指针。

  • 第 3步 – 创建一个add_node函数,接受一个整数值和一个指向链表头部的指针作为参数。

  • 第4步 – 使用add_node函数创建一个具有指定值的新节点。

  • 第 5步 – 如果头部为空,将新节点分配到链表的头部。

  • 第6步 – 如果列表的头部不是空的,则遍历链接列表的最后一个节点,并将最后一个节点的下一个指针交给新节点。

  • 第7步 – 返回连接列表的头部。

  • 第8步 – 创建一个指向连接列表头部的指针,并在main方法中把它初始化为nil。

  • 第 9步 – 要在更新列表头部的同时重复向连接列表添加项目,使用add_node方法。

  • 第 10步 – 当你从头部开始遍历链表时,打印每个节点的值。

  • 第11步 – 使用 fmt.Println() 函数执行打印语句,其中 ln 表示新行。

例子

在这个例子中,我们将使用节点结构向链表添加元素。让我们看一下代码。

package main
import "fmt"

type node struct {   //define a node struct
   value int
   next  *node
}

func add_node(head *node, value int) *node {
   newNode := &node{value: value}
   if head == nil {
      head = newNode
    } else {
      current := head
      for current.next != nil {
         current = current.next
      }
      current.next = newNode
   }
   return head
}

func main() {
   fmt.Println("The elements added in the linked list are:")
   var head *node
   head = add_node(head, 10)  //add elements to the list
   head = add_node(head, 20)
   head = add_node(head, 30)

   current := head
   for current != nil {
      fmt.Println(current.value) //print the added values
      current = current.next
   }
}

输出

The elements added in the linked list are:
10
20
30

方法2:使用linkedList结构

这个例子使用一个独特的linkedList结构来表示链接列表,其中包括一个指向头部节点的指针。通过linkedList结构的addNode方法将一个持有给定整数值的新节点添加到链接列表的末端。linkedList结构的traverse方法输出列表中每个节点的值。main 函数展示了如何建立一个链接列表,向其添加条目,并使用其函数遍历它。

算法

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

  • 第2步– 创建一个节点结构,包含一个整数值和一个指向下面节点的指针。

  • 第 3步– 创建一个linkedList结构,带有指向链接列表头部节点的指针。

  • 第4步 – 创建一个addNode方法,接受linkedList结构的一个整数值。

  • 第5步 – 使用addNode函数创建一个具有指定值的新节点。

  • 第 6步– 如果头部为空,将新节点分配给链接列表的头部。 然后,如果列表的头部不是空的,则遍历链接列表到最后一个节点。

  • 第7步 – 给新节点提供最后一个节点的下一个指针。

  • 第8步 – 做一个指向linkedList结构的指针,并在主函数中初始化它。

  • 第 9步 – 要向链接列表添加项目,重复使用addNode函数。

  • 第 10步 – 要打印链接列表中每个节点的值,使用traverse方法。

  • 第 11步 – 使用fmt.Println()函数执行打印语句,其中ln表示新行。

例子

在这个例子中,我们将使用LinkedList结构来向列表中添加元素。

package main
import "fmt"

type node struct { //define a node struct
   value int
   next  *node
}

type linkedList struct {
   head *node
}

func (lt *linkedList) addNode(value int) {
   newNode := &node{value: value}
   if lt.head == nil {
      lt.head = newNode
   } else {
      current := lt.head
      for current.next != nil {
         current = current.next
      }
      current.next = newNode
   }
}

func (lt *linkedList) traverse() {
   current := lt.head
   for current != nil {
      fmt.Println(current.value)  //print the added values
      current = current.next
   }
}

func main() {
   list := &linkedList{}
   fmt.Println("The elements added to linked list are:")
   list.addNode(10)  //add values to the list
   list.addNode(20)
   list.addNode(30)
   list.traverse()
}

输出

The elements added to linked list are:
10
20
30

结论

我们用两个例子执行了在链接列表中添加元素的程序。在第一个例子中我们使用了节点结构,在第二个例子中我们使用了LinkedList结构。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程