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