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 语言程序,用于将链接列表转换为映射以及示例。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP