Go語言程式:將列表轉換為集合


在本教程中,我們將編寫一個Go語言程式,將列表轉換為集合。連結串列是一種動態建立的資料結構,它有兩個元素:一個用於儲存值,另一個用於儲存下一個結構的地址。集合是一種抽象資料型別,可以儲存特定的值,而不會重複任何值,也沒有任何特定的順序。

將連結串列轉換為集合

現在讓我們來看一個將連結串列轉換為集合的例子。

語法

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

make函式用於建立切片或對映。它接受三個引數:一個是我們要建立的切片名稱和型別,然後是切片的長度和容量。該函式然後返回最終的切片。

演算法

步驟1 - 首先,我們需要匯入fmt包。

步驟2 - 下一步是建立一個節點。為此,我們定義了一個名為node的新結構。

步驟3 - 然後我們需要建立一個linkedlist結構體。它也有兩個欄位,一個是名為head的指標變數。此變數指向頭節點。

步驟4 - 然後我們初始化了兩個函式,一個是initlist()函式。此函式在linkedlist結構體上定義,並返回linkedlist{}的地址。

步驟5 - 第二個函式名為prepend,用於向連結串列新增一個新的節點元素,並接受一個節點作為引數。

步驟6 - 將資料新增到連結串列的當前節點後,我們需要使連結串列的下一個指標指向下一個節點,並增加連結串列的長度。

步驟7 - 啟動主函式並透過呼叫initlist()函式建立一個名為mylist的新連結串列。

步驟8 - 之後我們建立了幾個節點並將字串值儲存到它們中。

步驟9 - 下一步是將這些節點排列在一起以形成一個連結串列,為此我們透過將每個節點作為引數傳遞給函式來呼叫prepend()函式。

步驟10 - 然後我們需要建立一個集合。我們將其命名為newset,它以字串格式儲存資料。

步驟11 - 下一步是遍歷連結串列,在每次迭代中,我們從連結串列中提取值並將其儲存在集合中。

步驟12 - 然後我們需要使連結串列的指標變數指向下一個節點,並重復此過程,直到我們得到nil或null值。

步驟13 - 下一步是列印集合,為此我們使用fmt.Println()函式。

示例

package main
import (
   "fmt"
)
type node struct {
   data string
   next *node
}
type linkedlist struct {
   len int
   head *node
}
func initList() *linkedlist {
   return &linkedlist{}
}
func (l *linkedlist) prepend(n *node) {
   node := &node{
      data: n.data,
   }
   if l.head == nil {
      l.head = node
   } else {
      node.next = l.head
      l.head = node
   }
   l.len++
   return
}
func main() {
   mylist := initList()
   node1 := &node{data: "Apple"}
   node2 := &node{data: "mango"}
   node3 := &node{data: "Banana"}
   mylist.prepend(node1)
   mylist.prepend(node2)
   mylist.prepend(node3)
   newset := make(map[string]struct{})
   for mylist.head != nil {
      newset[mylist.head.data] = struct{}{}
      mylist.head = mylist.head.next
   }
   fmt.Println("The obtained set is:", newset)
}

輸出

The obtained set is: map[Banana:{} mango:{} Apple:{}]

結論

我們已經成功編譯並執行了一個Go語言程式,用於將連結串列轉換為集合,並附帶一個示例。

更新於:2022年12月28日

瀏覽量:684

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告