Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| // Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan. | |
| // License: https://creativecommons.org/licenses/by-nc-sa/4.0/ | |
| // See page 99. | |
| // Graph shows how to use a map of maps to represent a directed graph. | |
| package main | |
| import "fmt" | |
| //!+ | |
| var graph = make(map[string]map[string]bool) | |
| func addEdge(from, to string) { | |
| edges := graph[from] | |
| if edges == nil { | |
| edges = make(map[string]bool) | |
| graph[from] = edges | |
| } | |
| edges[to] = true | |
| } | |
| func hasEdge(from, to string) bool { | |
| return graph[from][to] | |
| } | |
| //!- | |
| func main() { | |
| addEdge("a", "b") | |
| addEdge("c", "d") | |
| addEdge("a", "d") | |
| addEdge("d", "a") | |
| fmt.Println(hasEdge("a", "b")) | |
| fmt.Println(hasEdge("c", "d")) | |
| fmt.Println(hasEdge("a", "d")) | |
| fmt.Println(hasEdge("d", "a")) | |
| fmt.Println(hasEdge("x", "b")) | |
| fmt.Println(hasEdge("c", "d")) | |
| fmt.Println(hasEdge("x", "d")) | |
| fmt.Println(hasEdge("d", "x")) | |
| } |