JS实现数据结构(八):图

本文介绍了图论的基本概念,包括顶点、边、度和路径等,并探讨了无向图与有向图的区别。通过邻接矩阵和邻接表两种方式展示了如何表示图结构。此外,还提供了一个使用邻接表实现图的JavaScript代码示例,涵盖了添加顶点、边以及字符串表示图的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 图论是一个非常大的话题

  • 图论是数学的一个分支,研究事物之间的关系,顶点表示事物,边表示两个食物的关系

  • 图有一组顶点和一组边,可以是有向的,也可以是无向的

  • 图的术语

    • 顶点:图中的一个节点
    • 边:顶点和顶点的连线
    • 相邻节点:由一条边连接的节点
    • 度:是一个顶点的相邻节点的数量
    • 简单路径:要求不包含重复的顶点
    • 回路:第一个顶点和最后一个顶点相同的路径称为回路
    • 无向图:边是有方向的
    • 有向图:边是无方向的
    • 无权图:边没有携带权重
    • 带权图:边有一定的权重
  • 图的表示法:

    • 邻接矩阵:二维数组

    • 邻接表:顶点与相邻顶点列表组成,用数组/链表和字典都可以

  • 图结构的封装

//用邻接表封装
function Graph(){
  //属性
  this.vertexes = [];  //顶点
  this.edges = new Dictionay(); //边
  //方法
  //1.添加顶点
  Graph.prototype.addVertex = function(v){
    this.vertexes.push(v);
    this.edges.set(v,[]);
  }
  //2.添加边
  Graph.prototype.addEdge = function(v1,v2){
    this.edges.get(v1).push(v2);
    this.edges.get(v2).push(v1)
  }
  
  //3.toString方法
  Graph.prototype.toString = function(){
    var resultString = "";
    for(var i = 0; i<this.vertexes.length;i++){
      resultSring += this.vertexes[i] + "->"
      var vEdges = this.edges.get(this.vertexes[i]);
      for(var j = 0;j<vEdges.length;j++){
        resultString += vEdges[j] + ''
      }
      return resultString;
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值