码迷,mamicode.com
首页 > 其他好文 > 详细

golang 无向简单图邻接多重表

时间:2021-04-28 12:08:23      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:main   ted   graph   序号   struct   int   lis   简单   ges   

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
		}

	}
}

  

golang 无向简单图邻接多重表

标签:main   ted   graph   序号   struct   int   lis   简单   ges   

原文地址:https://www.cnblogs.com/xcx-bwt/p/14711395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!