golang 无向简单图邻接多重表

mob604756fbd94e · · 1063 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

   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大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1063 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传