// 字典结构的封装
class Map {
constructor() {
this.items = {};
}
// has(key) 判断字典中是否存在某个 key
has(key) {
return this.items.hasOwnProperty(key);
}
// set(key, value) 在字典中添加键值对
set(key, value) {
this.items[key] = value;
}
// remove(key) 在字典中删除指定的 key
remove(key) {
// 如果集合不存在该 key,返回 false
if (!this.has(key)) { return false };
delete this.items[key];
}
// get(key) 获取指定 key 的 value,如果没有,返回 undefined
get(key) {
return this.has(key) ? this.items[key] : undefined;
}
// 获取所有的 key
keys() {
return Object.keys(this.items);
}
// 获取所有的 value
values() {
return Object.values(this.items);
}
// size() 获取字典中的键值对个数
size() {
return this.keys().length;
}
// clear() 清空字典中所有的键值对
clear() {
this.items = {};
}
}
function Graph() {
// 顶点和边
this.vertexes = []
this.edges = new Map()
// 添加顶点
Graph.prototype.addVertexes = function(v) {
this.vertexes.push(v)
// 为该顶点增加一个相邻边映射
thise.edges.set(v, [])
}
// 添加边
Graph.prototype.addEdges = function(v1, v2) {
this.edges.get(v1).push(v2)
this.edges.get(v2).push(v1)
}
Graph.initColor = function() {
// 初始节点颜色状态为白色,未访问
let colors = []
for(vertex of vertexes) {
colors[color] = 'white'
}
return colors
}
}
console