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語言程式,用於將連結串列轉換為集合,並附帶一個示例。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP