Golang程序 链表和数组相关转换

Golang程序 链表和数组相关转换

在Go编程语言中,链表是一种由一系列节点组成的数据结构,每个节点都有一个值和一个指向它后面节点的引用(指针)。由于项目可以被添加到列表中或从列表中删除,而不需要重新排列整个数据集,因此链接列表提供了一种动态的、可适应的方法来存储数据。使用结构体和指针,链接列表可以在Go中实现,而数组是一组固定大小的相同元素,可以通过它们各自的索引来访问,这些索引是以零为基础的整数。数组的大小在声明的时候就已经确定了,以后不能再改变了。

方法1:将链表转换为数组

在这种方法中,我们使用节点结构将链表转换为数组。在链接列表中设置值,并转换为使用make函数创建的数组。循环在链接列表上运行,元素被追加到数组中,然后使用 fmt 包打印在控制台。

算法

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

  • 第2步 – 创建一个node类型的结构,包含int类型的val和node类型的next。

  • 第 3步– 创建一个名为array的空白数组。

  • 第 4 步 – 创建一个名为curr的指针,并将其初始化为链表的头部。

  • 第 5步 – 直到curr不是nil,用curr.next命令运行一个循环。

  • 第6步 – 将数组返回到链表中。

例子

在这个例子中,我们将把链表转换为数组。

package main
import "fmt"
type Node struct {
   val  int
   next *Node
}

func main() {
   // Creating linked list
   head := &Node{val: 10, next: &Node{val: 20, next: &Node{val: 30, next: nil}}}

   // Converting linked list to an array
   array := make([]int, 0)
   for curr := head; curr != nil; curr = curr.next {
      array = append(array, curr.val)
   }
   fmt.Println("The linked list is converted into array:")
   fmt.Println("Linked List:", array)
}

输出

The linked list is converted into array:
Linked List: [10 20 30]

方法2:将数组转换为链表

在这个方法中,我们借助于函数array_to_List将数组转换为链表,在这个函数中,将运行一个循环,并将头值返回给函数。列表将使用fmt包打印在控制台。

算法

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

  • 第2步 – 用数组的第一个元素的值创建一个叫做head的节点。

  • 第 3步 – 创建一个指针curr并将其初始值设置为head。然后,遍历数组的其余元素。

  • 第4步 – 添加一个新的节点,newNode带有当前元素的值。

  • 第5步 – 在newNode上移动curr指针。

  • 第6步 – 在下一步,将head返回给函数。

例子

在这个例子中,我们将把数组转换为链表。

package main
import "fmt"

type Node struct {
   val  int
   next *Node
}

func array_to_List(array []int) *Node {
   head := &Node{val: array[0], next: nil}
   curr := head
   for i := 1; i < len(array); i++ {
      curr.next = &Node{val: array[i], next: nil}
      curr = curr.next
   }
   return head
}

func main() {
   // Creating array
   array := []int{10, 20, 30}

   // Converting array to linked list
   head := array_to_List(array)

   // Printing linked list
   fmt.Println("The array after its converted to linked list:")
   for curr := head; curr != nil; curr = curr.next {
      fmt.Print(curr.val, " -> ")
   }
   fmt.Print("nil")
}

输出

The array after its converted to linked list:
10 -> 20 -> 30 -> nil

总结

我们用两个例子执行了将链表转换为数组的程序,反之亦然。在第一个例子中,我们用数组转换链接列表为数组。这两个程序都产生了理想的输出。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程