從零開始學golang之圖-鄰接矩陣
package main
import (
"container/list"
"fmt"
)
const MAX_SIZE int = 5
//為了看上去 好一些
const MAX_VALUE int = 9
func main() {
fmt.Println("Prim")
var gg Graph
var vexs = []string{"A", "B", "C", "D", "E"}
gg.vexnum = 5
gg.vexs = vexs
for i := 0; i < len(vexs); i++ {
for j := 0; j < len(vexs); j++ {
gg.matrix[i][j] = MAX_VALUE
}
}
initGG(&gg)
fmt.Println(gg.vexs)
fBFS(&gg)
fDFS(&gg)
//listgg := list.New()
PrintG(gg, len(vexs))
}
func PrintG(gg Graph, l int) {
for i := 0; i < l; i++ {
fmt.Println(gg.matrix[i])
}
}
type Graph struct {
vexs []string //定點集合
vexnum int //定點數量
edgnum int //邊數量
matrix [MAX_SIZE][MAX_SIZE]int //鄰接矩陣
}
func initGG(gg *Graph) {
gg.matrix[0][1] = 5
gg.matrix[0][2] = 3
gg.matrix[1][0] = 5
gg.matrix[1][3] = 7
gg.matrix[1][4] = 4
gg.matrix[2][0] = 3
gg.matrix[2][3] = 6
gg.matrix[3][1] = 7
gg.matrix[3][2] = 6
gg.matrix[3][4] = 1
gg.matrix[4][1] = 4
gg.matrix[4][3] = 1
gg.edgnum = 12 / 2
}
//深度遍歷
func DFS(gg *Graph, visit *[]bool, i int) {
fmt.Println(gg.vexs[i])
for j := 0; j < gg.vexnum; j++ {
if gg.matrix[i][j] != MAX_VALUE && !(*visit)[j] {
(*visit)[j] = true
DFS(gg, visit, j)
}
}
}
func fDFS(gg *Graph) {
visit := make([]bool, 10, 10)
fmt.Println(visit)
visit[0] = true
DFS(gg, &visit, 0)
}
//廣度遍歷
func fBFS(gg *Graph) {
listq := list.New()
visit := make([]bool, 10, 10)
//first push
visit[0] = true
listq.PushBack(0)
for listq.Len() > 0 {
index := listq.Front()
fmt.Println(gg.vexs[index.Value.(int)])
for i := 0; i < gg.vexnum; i++ {
if !visit[i] && gg.matrix[index.Value.(int)][i] != MAX_VALUE {
visit[i] = true
listq.PushBack(i)
}
}
listq.Remove(index)
}
}
func prim() {
}
上海下雪了,有點冷,晚上來得及再寫 prim
拉程式碼兄弟請到這
https://github.com/godla/golang-sort-data-structures-study.git
一起每天擼一點
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 鄰接矩陣、度矩陣矩陣
- 第6章 圖的學習總結(鄰接矩陣&鄰接表)矩陣
- 圖的儲存結構——鄰接矩陣與鄰接表矩陣
- 從零開始學golang之udpGolangUDP
- 從零開始學golang之 PrimGolang
- 從零開始學golang之TCPGolangTCP
- 從零開始學golang之DijkstraGolang
- C#實現圖的鄰接矩陣和鄰接表結構C#矩陣
- 從零開始學golang之gin加上gormGolangORM
- 從零開始學golang之Dynamic programming --LCSGolang
- _DataStructure_C_Impl:圖的鄰接矩陣儲存ASTStruct矩陣
- 圖的深度遍歷(C語言)鄰接矩陣表示C語言矩陣
- 從零開始學golang之RedBlackTree-DeleteGolangdelete
- 【PTA】鄰接矩陣儲存圖的深度優先遍歷矩陣
- BFS-圖的廣度優先搜尋--鄰接矩陣矩陣
- 從零開始一起學習SLAM | 神奇的單應矩陣SLAM矩陣
- (十八)從零開始學人工智慧-智慧推薦系統:矩陣分解人工智慧矩陣
- 從零開始學設計模式(七)—橋接模式設計模式橋接
- BFS求無權圖的單源最短路徑-鄰接矩陣儲存矩陣
- 【Python】Python中的圖的鄰接矩陣轉化為字典格式Python矩陣
- 想學人工智慧,先從理解矩陣乘法開始人工智慧矩陣
- POJ 2778-DNA Sequence(AC自動機+構建鄰接矩陣+矩陣快速冪)矩陣
- python矩陣下標從幾開始?Python矩陣
- (C語言、資料結構)鄰接矩陣的初始化、邊的插入和輸出,以及鄰接矩陣的撤銷和邊的搜尋C語言資料結構矩陣
- 從零開始學YC-Framework之鑑權Framework
- 從零開始學習KafkaKafka
- 從零開始學習機器學習機器學習
- 【ROS】從零開始學ROSROS
- 從零開始學習laravelLaravel
- 從零開始學PythonPython
- 從零開始學 Python 之基礎語法Python
- 從零開始netty學習筆記之BIONetty筆記
- 從零開始netty學習筆記之protobufNetty筆記
- 從零開始學 Spring BootSpring Boot
- eclipse學習從零開始Eclipse
- 從零開始搭建 gRPC 服務 – Golang 篇(一)RPCGolang
- 從零開始搭建 gRPC 服務 - Golang 篇(二)RPCGolang
- 《從零開始學Swift》學習筆記(Day 17)——Swift中陣列集合Swift筆記陣列