以下是一个基于邻接表的表示图的数据结构的代码示例:
// 定义图的顶点类
class Vertex {
constructor(id) {
this.id = id;
this.neighbors = [];
}
addNeighbor(neighbor) {
this.neighbors.push(neighbor);
}
}
// 定义图的数据结构
class Graph {
constructor() {
this.vertices = {};
}
addVertex(id) {
if (!this.vertices[id]) {
const newVertex = new Vertex(id);
this.vertices[id] = newVertex;
}
}
addEdge(sourceId, targetId) {
if (this.vertices[sourceId] && this.vertices[targetId]) {
const sourceVertex = this.vertices[sourceId];
const targetVertex = this.vertices[targetId];
sourceVertex.addNeighbor(targetVertex);
targetVertex.addNeighbor(sourceVertex);
}
}
printGraph() {
for (const vertexId in this.vertices) {
const vertex = this.vertices[vertexId];
const neighbors = vertex.neighbors.map(neighbor => neighbor.id);
console.log(`${vertex.id} => ${neighbors.join(', ')}`);
}
}
}
// 使用示例
const graph = new Graph();
graph.addVertex('A');
graph.addVertex('B');
graph.addVertex('C');
graph.addVertex('D');
graph.addEdge('A', 'B');
graph.addEdge('B', 'C');
graph.addEdge('C', 'D');
graph.addEdge('D', 'A');
graph.printGraph();
这个示例中,我们首先定义了一个顶点类Vertex
,每个顶点包含一个唯一的标识符id
和一个邻居列表neighbors
。然后,我们定义了一个图的数据结构Graph
,其中包含一个顶点字典vertices
。
在图的数据结构中,我们实现了三个方法:addVertex
用于添加一个顶点到图中,addEdge
用于添加一条边连接两个顶点,printGraph
用于打印图的结构。
在使用示例中,我们创建了一个图对象graph
,然后依次添加了四个顶点'A'、'B'、'C'和'D',并通过调用addEdge
方法添加了四条边。最后,我们调用printGraph
方法打印图的结构。
下一篇:表视图底部约束不会动画/更改