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 无向简单图邻接多重表的更多相关文章

  1. 图的邻接多重表和搜索(C++版本)

    最近在学数据结构,学到图这一章,网上的C++版本的代码乱得不行,所以自己写了一个完整C++版本的放这里. 用邻接多重表表示一个无向图,并给出DFS和BFS搜索代码.邻接多重表好处就是贼直观,几条边就几 ...

  2. 图->存储结构->邻接多重表

    文字描述 邻接多重表是无向图的另一种链式存储结构. 虽然邻接表是无向图的一种很有效的存储结构,在邻接表中容易求得顶点和边的各种信息. 但是,在邻接表中每一条边(vi,vj)有两个结点,分别在第i个和第 ...

  3. SQL 农经权数据库问题提取_身份证号码相同(字段值出现多次);身份证号码相同但姓名不同(A字段相同,B字段不相同);发包方无承包方信息(A表有,B表无)等

    身份证号码相同(字段值出现多次) select * from CBF_JTCY a,(select CYZJHM, count(*) from CBF_JTCY  group by  CYZJHM h ...

  4. golang 无缓冲channel

    golang 无缓冲channel package main import "fmt" func main() { // 1S =1000ms //1ms = 1000us //1 ...

  5. 【mybatis】mybatis查询 结果 用map接收,无实体接收 + 关联子表 一并返回主子表的结果

    如果后台程序没有实体对应mysql的数据表. 而mybatis想要查询mysql这个数据表的数据,返回给应用程序. 应用程序该如何接收? =============================== ...

  6. Golang 实现 Redis(5): 用跳表实现SortedSet

    本文是使用 golang 实现 redis 系列的第五篇, 将介绍如何使用跳表实现有序集合(SortedSet)的相关功能. 跳表(skiplist) 是 Redis 中 SortedSet 数据结构 ...

  7. Golang 实现 Redis(5): 使用跳表实现 SortedSet

    本文是使用 golang 实现 redis 系列的第五篇, 将介绍如何使用跳表实现有序集合(SortedSet)的相关功能. 跳表(skiplist) 是 Redis 中 SortedSet 数据结构 ...

  8. [Go] golang无缓冲通道实现工作池控制并发

    展示如何使用无缓冲的通道创建一个goroutine池,控制并发频率1.无缓冲通道保证了两个goroutine之间的数据交换2.当所有的goroutine都忙的时候,能够及时通过通道告知调用者3.无缓冲 ...

  9. ajax无刷新方式对form表单进行赋值!

    /** * 把json数据填充到from表单中 */ <form id="editForm" action="user.php"> 用户名:< ...

  10. golang 二维平面求多重遮挡三角形总面积

    解决问题描述:二维平面有很多三角形错落,可能会相互叠加落在一起,也可能互相远离.目标求出这些三角形的总占地面积. 我最开始想的解决方案是用总面积-总重叠面积 = 总占地面积.后来实现起来发现当面临多次 ...

随机推荐

  1. Linux之sudo

    [摘要] 生产环境中为了系统的安全性,Linux主机的root权限是只能管理器使用,普通用户不具有root权限,但是可以通过sudo获取root权限执行一些操作. 一.知识要点 wheel组 在Lin ...

  2. 树模型-label boosting-GBDT

    GBDT GBDT是boosting系列算法的代表之一,其核心是 梯度+提升+决策树. GBDT回归问题 通俗的理解: 先来个通俗理解:假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时 ...

  3. 手把手教你基于gin从零搭建一个属于你自己的go项目(一)

    一.为什么写这个,适合什么人看 原因 因为自己想写点小玩意,本来是打算用egg.js来写服务端的,后来发现了个更好玩的midway,但是后来发现自己手上的服务器都是一核2g的小水管,用node有点难顶 ...

  4. websocket fleck demo

    前言 fleck 比较简洁,想看下他的源码的,先感受一下demo吧. 正文 先上代码. static IDictionary<string, IWebSocketConnection> d ...

  5. mmdetection训练自己的模型【数据集转变,数据集划分,数据集gt可视化,mmdetection配置文件生成及修改,开始训练,gradio部署】

    针对有一点mmdetction基础的,然后想根据自己的数据集,熟练训练自己的模型.需要改成自己配置的地方,我会在代码中做好标记,方便修改. 我们先了解一下mmdetection的基本流程,你想训练一个 ...

  6. css 中的BFC

    一.是什么 我们在页面布局的时候,经常出现以下情况: 这个元素高度怎么没了? 这两栏布局怎么没法自适应? 这两个元素的间距怎么有点奇怪的样子? ...... 归根究底是元素之间相互的影响,导致了意料之 ...

  7. 力扣580(MySQL)-统计各专业人数(中等)

    题目: 一所大学有 2 个数据表,分别是 student 和 department ,这两个表保存着每个专业的学生数据和院系数据. 写一个查询语句,查询 department 表中每个专业的学生人数 ...

  8. 力扣383(java&python)-赎金信(简单)

    题目: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成. 如果可以,返回 true :否则返回 false . m ...

  9. Redis消息队列发展历程

    ​简介:Redis是目前最受欢迎的kv类数据库,当然它的功能越来越多,早已不限定在kv场景,消息队列就是Redis中一个重要的功能.Redis从2010年发布1.0版本就具备一个消息队列的雏形,随着1 ...

  10. MySQL 深潜 - MDL 锁的实现与获取机制

    简介:本文将介绍在 MDL 系统中常用的数据结构及含义,然后从实现角度讨论 MDL 的获取机制与死锁检测,最后分享在实践中如何监控 MDL 状态. ​ 作者 | 泊歌 来源 | 阿里技术公众号 一 背 ...