本文摘自网络,作者,侵删。
golang 无向简单图邻接多重表
package main import "fmt" type MultipleEdgeNode struct { iVex int iLink *MultipleEdgeNode jVex int jLink *MultipleEdgeNode } type MultipleVertexNode struct { data interface{} firstEdge *MultipleEdgeNode } type GraphMultipleAdjList struct { adjList []MultipleVertexNode numVertexes, numEdges int } func CreateMultipleALGraph(g *GraphMultipleAdjList) { var i,j int fmt.Println("输入顶点数和边数") _, err := fmt.Scan(&g.numVertexes, &g.numEdges) if err != nil { panic(err) } g.adjList = make([]MultipleVertexNode, g.numVertexes) // 读入顶点信息 for i := 0; i < g.numVertexes; i++ { _, err = fmt.Scan(&g.adjList[i].data) if err != nil { panic(err) } } // 建立边表 for k := 0; k < g.numEdges; k++ { fmt.Println("输入边(vi, vj)上的顶点序号:") _, err := fmt.Scan(&i,&j) if err != nil { panic(err) } e := &MultipleEdgeNode{ iVex:i, jVex:j, } gIFirst := g.adjList[i].firstEdge if gIFirst == nil { g.adjList[i].firstEdge = e }else { e.iLink = gIFirst g.adjList[i].firstEdge = e } gJFirst := g.adjList[j].firstEdge if gJFirst == nil { g.adjList[j].firstEdge = e }else { e.jLink = gJFirst g.adjList[j].firstEdge = e } } }
本文来自:51CTO博客
感谢作者:mob604756fbd94e
查看原文:golang 无向简单图邻接多重表
相关阅读 >>
macbook linux 树莓派raspberrypi安装Golang环境
多协程通道的应用---三协程通过通道实现abc按顺序输出100次
Golang ip地址字符串整数string int相互转换
聊聊dubbo-Go-proxy的authorityfilter
更多相关阅读请进入《Go》频道 >>

Go语言101
一个与时俱进的Go编程知识库。