Go語言程式:將向量轉換為列表
在Go語言中,向量被稱為陣列或切片。切片是大小可變的動態陣列,而連結串列是一種列表資料結構,其中每個節點都包含一個值並指向下一個元素。我們將在這個程式中使用兩個示例來將向量轉換為列表。第一個示例將使用內建的複製函式,第二個示例將反向迭代切片以獲得輸出。
方法一:使用複製函式
在此方法中,我們建立了一個向量,它將使用複製和make函式轉換為列表。複製函式將使用make函式將向量元素複製到新建立的列表。
語法
func copy(dst, str[] type) int
Go語言中的copy函式用於將一個源陣列的值複製到目標陣列,並返回已複製元素的數量作為結果。它接受兩個陣列作為引數。
func make ([] type, size, capacity)
Go語言中的make函式用於建立陣列/對映,它接受要建立的變數型別、大小和容量作為引數。
func len(v Type) int
len()函式用於獲取任何引數的長度。它接受一個引數作為要查詢長度的資料型別變數,並返回一個整數值,即變數的長度。
演算法
步驟1 - 建立一個名為main的包,並在程式中宣告fmt(格式化包),其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。
步驟2 - 建立一個包含一些值的int切片向量。
步驟3 - 在下一步中,使用make函式生成一個與向量長度相同的新的切片列表。
步驟4 - 現在,使用複製函式將向量的專案新增到列表中。
步驟5 - 使用fmt.Println()函式在控制檯上列印新的列表和向量列表,其中ln表示換行。
步驟6 - 應該注意的是,在Go中,切片是一種類似動態陣列的資料結構,複製現有切片通常涉及建立一個與原始切片長度相同的新的切片。元素使用複製函式從一個切片複製到另一個切片。
示例
在這個示例中,我們將使用複製函式將向量轉換為列表。讓我們透過程式碼瞭解它是如何完成的。
package main
import (
"fmt"
)
func main() {
slice := []int{10, 20, 30, 40, 50} //create a vector
// convert slice to list
list := make([]int, len(slice))
copy(list, slice) //use copy function to copy the elements of a slice to a list
fmt.Println("Vector:", slice) //print the vector
fmt.Println("The conversion of slice to list looks like:")
fmt.Println("List:", list) //print the list
}
輸出
Vector: [10 20 30 40 50] The conversion of slice to list looks like: List: [10 20 30 40 50]
方法二:使用連結串列
此方法透過反向迭代切片併為切片中的每個元素構造一個新節點,然後是之前建立的節點,來生成一個連結串列。
語法
func len(v Type) int
len()函式用於獲取任何引數的長度。它接受一個引數作為要查詢長度的資料型別變數,並返回一個整數值,即變數的長度。
演算法
步驟1 - 建立一個名為main的包,並在程式中宣告fmt(格式化包),其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。
步驟2 - 建立一個名為Node的結構體型別,它包含兩個成員:Value和Next,它們分別為int和*Node型別。
步驟3 - 建立一個int切片,並建立一個型別為*Node的變數head,並將其初始值設定為nil。
步驟4 - 反向遍歷整數切片。
步驟5 - 使用Node結構體為切片中的每個元素建立一個新節點,並將Value欄位設定為當前切片中的元素,並將Next欄位設定為先前建立的節點。
步驟6 - 建立一個新節點並將其賦值給head變數。
步驟7 - 對切片的每個元件重複步驟5和6。
步驟8 - 跟蹤Next指標來遍歷連結串列,然後輸出每個節點的值。
步驟9 - 使用fmt.Println()函式執行輸出語句,其中ln表示換行。
示例
在這個示例中,我們將使用連結串列將向量轉換為列表。讓我們透過程式碼瞭解其執行。
package main
import "fmt"
type Node struct {
Value int
Next *Node
}
func main() {
// Create a slice of ints
vector_val := []int{10, 20, 30, 40, 50} //create a vector
fmt.Println("The initially created vector is:", vector_val)
// Convert the slice to a linked list
var head *Node
for i := len(vector_val) - 1; i >= 0; i-- {
head = &Node{vector_val[i], head} //convert the vector to list
}
// Print the linked list
fmt.Println("The elements of list are:")
for node := head; node != nil; node = node.Next {
fmt.Println(node.Value) //print the values of list
}
}
輸出
The initially created vector is: [10 20 30 40 50] The elements of list are: 10 20 30 40 50
結論
我們使用兩種方法執行了將向量轉換為列表的程式。在第一個示例中,我們使用了內建的複製函式,在第二個示例中,我們使用了連結串列來執行。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP