graph in go
package main
import (
"fmt"
)
type Graph map[string]map[string]bool
func (g Graph) addEdge(node1, node2 string) {
if g[node1] == nil {
g[node1] = make(map[string]bool)
}
g[node1][node2] = true
if g[node2] == nil {
g[node2] = make(map[string]bool)
}
g[node2][node1] = true
}
func (g Graph) removeEdge(node1, node2 string) {
delete(g[node1], node2)
delete(g[node2], node1)
}
func (g Graph) hasEdge(node1, node2 string) bool {
return g[node1][node2]
}
func main() {
graph := make(Graph)
graph.addEdge("A", "B")
graph.addEdge("B", "C")
graph.addEdge("C", "D")
graph.addEdge("D", "A")
fmt.Println("Graph:", graph)
fmt.Println("Does edge A-B exist?", graph.hasEdge("A", "B"))
graph.removeEdge("A", "B")
fmt.Println("After removing edge A-B, Graph:", graph)
fmt.Println("Does edge A-B exist now?", graph.hasEdge("A", "B"))
}
This Go code defines a Graph
type using a map of strings to maps of strings to booleans to represent an undirected graph. Methods to add edges between nodes (addEdge
), remove edges (removeEdge
), and check if an edge exists between nodes (hasEdge
) are implemented.
In main
, a graph is created and edges "A-B," "B-C," "C-D," and "D-A" are added. It demonstrates adding, removing, and checking for edges within the graph.