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+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.