golang 无向简单图邻接多重表


本文摘自网络,作者,侵删。

   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 无向简单图邻接多重表

相关阅读 >>

.Go是什么文件

模块二 Go语言进阶技术-panic函数、recover函数以及defer语句(下)

解决Golang使用mysq无法执行多条语句

Golang 笔记之深入浮点数

Go语言学习6-字典类型

Golang 适合做web开发吗

聊聊Gorm的groupby

ssh连接服务器后执行多条命令

Golang 如何类型转换

手撸Golang Go与微服务 chatserver之3 压测与诊断

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...