数据结构图有那些应用场景呢?

发布于 2022-09-13 00:59:03 字数 1916 浏览 23 评论 0

数据结构图有那些应用场景呢?
不限于前端,后端,数据库,任何场景,请尽可能告诉我最真实的使用场景;
我正在学习这个知识点,我需要更多的场景练习加深记忆灵活掌握,也希望可以给浏览者提供思路,而不只是死记硬背住概念;
另外,breadthFirstSearch 方法,写在Graph内部比较合适,还是如下写在外部比较合适呢
再次感谢


class Graph {
  constructor() {
    this.isDirected = false;
    this.vertices = []; // 顶点
    this.adjList = new Dictionary(); // 邻边
  }

  addVertex(v) {
    if (!this.vertices.includes(v)) {
      this.vertices.push(v);
      this.adjList.set(v, []);
    }
  }

  addEdge(v, w) {
    if (!this.vertices.includes(v)) {
      this.vertices.push(v);
    }
    if (!this.vertices.includes(w)) {
      this.vertices.push(w);
    }
    this.adjList.get(v).push(w);
    if (!this.isDirected) {
      this.adjList.get(w).push(v);
    }
  }

  getVertices() {
    return this.vertices;
  }
  getAdjList() {
    return this.adjList;
  }

  // breadthFirstSearch(first) {}

  toString() {
    let result = "";

    for (let i = 0; i < this.vertices.length; i++) {
      const vertex = this.vertices[i];
      const adjList = this.adjList.get(vertex);
      result += `${vertex} => ${adjList} \n`;
    }
    return result;
  }
}

function initMark(vertices) {
  const map = {};
  for (let i = 0; i < vertices.length; i++) {
    map[vertices[i]] = false;
  }
  return map;
}

function breadthFirstSearch(graph, startVertex, callback) {
  const vertices = graph.getVertices();
  const adjList = graph.getAdjList();

  const eachMap = initMark(vertices);
  const queue = new Queue();
  queue.enqueue(startVertex);

  while (!queue.isEmpty()) {
    const u = queue.dequeue();
    const neighbors = adjList.get(u);
    eachMap[u] = true;
    for (let i = 0; i < neighbors.length; i++) {
      const neighbor = neighbors[i];
      if (!eachMap[neighbor]) {
        eachMap[neighbor] = true;
        queue.enqueue(neighbor);
      }
    }
    if (typeof callback === "function") {
      callback(u);
    }
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

远山浅 2022-09-20 00:59:03

挺多的吧,地图导航,JavaScript GC标记回收,字节自研的图数据库,不都是图的应用嘛

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文