Go语言程序:将列表转换为映射


在本教程中,我们将编写一个 Go 语言程序,用于将列表转换为映射。链接列表是一种动态创建的数据结构,它有两个元素,一个用于存储值,另一个用于存储下一个结构的地址。映射以键值对的形式存储元素。映射是一个无序的、灵活的集合,不允许重复。

将列表转换为映射

在本文中,我们将讨论如何将链接列表转换为映射。以下程序说明了此转换过程。

语法

func make([]type, length, capacity) []type

make 函数用于创建切片或映射。它接受三个参数,一个是我们要创建的切片名称和类型,后跟切片的长度和容量。然后,该函数返回最终的切片。

算法

步骤 1 - 首先,我们需要导入 fmt 包。

步骤 2 - 下一步是创建一个节点。为此,我们定义了一个名为 node 的新结构。

步骤 3 - 然后我们需要创建一个 linkedlist 结构体。它也有两个字段,一个是名为 head 的指针变量。此变量指向头节点

步骤 4 - 然后我们初始化了两个函数,一个是 initlist() 函数。此函数在 linkedlist 结构体上定义,并返回 linkedlist{} 的地址。

步骤 5 - 创建第二个名为 prepend 的函数,它用于向链接列表添加一个新的节点元素,并以节点作为参数。

步骤 6 - 将数据添加到链接列表的当前节点后,我们需要使链接列表的 next 指针指向下一个节点,并增加链接列表的长度。

步骤 7 - 启动 main 函数并通过调用 initlist() 函数创建一个名为 mylist 的新链接列表。

步骤 8 - 之后,我们创建了几个节点并将字符串值存储到其中。

步骤 9 - 下一步是将这些节点组合在一起以形成一个链接列表,为此,我们通过将每个节点作为参数传递给函数来调用 prepend() 函数。

步骤 10 - 然后我们需要创建一个映射。我们将其命名为 newmap,它以 int 和 string 格式以键值对的形式存储数据。

步骤 11 - 下一步是迭代链接列表,并在每次迭代中从链接列表中提取键和数据,并将其存储在集合中。

步骤 12 - 然后我们需要使链接列表的指针变量指向下一个节点,并重复此过程,直到我们得到 nil 或 null 值。

步骤 13 - 下一步是使用 fmt.Println() 函数在屏幕上打印映射。

示例

package main
import (
   "fmt"
)
type node struct {
   data string
   key int
   next *node
}
type linkedlist struct {
   len int
   head *node
}
func initList() *linkedlist {
   return &linkedlist{}
}

// function to add a new node to the linked list
func (l *linkedlist) prepend(n *node) {
   node := &node{
      data: n.data,
      key: n.key,
   }
   if l.head == nil {
      l.head = node
   } else {
      node.next = l.head
      l.head = node
   }
   l.len++
   return
}
func main() {
   mylist := initList()
   node1 := &node{key: 1, data: "Sunday"}
   node2 := &node{key: 2, data: "Monday"}
   node3 := &node{key: 3, data: "Tuesday"}
   mylist.prepend(node1)
   mylist.prepend(node2)
   mylist.prepend(node3)
   newmap := make(map[int]string)
   for mylist.head != nil {
      newmap[mylist.head.key] = mylist.head.data
      mylist.head = mylist.head.next
   }
   fmt.Println("The obtained map from linked list is:", newmap)
}

输出

The obtained map from linked list is: map[2:Monday 1:Sunday 3:Tuesday]

结论

我们已成功编译并执行了一个 Go 语言程序,用于将链接列表转换为映射以及示例。

更新于: 2022-12-28

1K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告