49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
func main() {
|
|
|
|
MyGraph := DirectedGraph{}
|
|
|
|
// Instantiate Nodes
|
|
FirstNode := Node{Data: City{Name: "Amsterdam", Population: 821_752}}
|
|
SecondNode := Node{Data: City{Name: "Dublin", Population: 544_107}}
|
|
thirdNode := Node{Data: City{Name: "Berlin", Population: 3_645_000}}
|
|
fourthNode := Node{Data: City{Name: "Paris", Population: 2_161_000}}
|
|
|
|
// Setup relations
|
|
FirstNode.Edges[0] = Edge{To: &thirdNode}
|
|
SecondNode.Edges[0] = Edge{To: &thirdNode}
|
|
FirstNode.Edges[1] = Edge{To: &SecondNode}
|
|
thirdNode.Edges[0] = Edge{To: &fourthNode}
|
|
|
|
// Add Nodes to graph
|
|
MyGraph.AddNode(&FirstNode)
|
|
MyGraph.AddNode(&SecondNode)
|
|
MyGraph.AddNode(&thirdNode)
|
|
MyGraph.AddNode(&fourthNode)
|
|
|
|
fmt.Println("Whats inside the graph")
|
|
for index, node := range MyGraph.nodes {
|
|
if (node == Node{}) {
|
|
continue
|
|
}
|
|
fmt.Printf("%d %s\t(Pops: %d)\n", index, node.Data.Name, node.Data.Population)
|
|
for _, edge := range node.Edges {
|
|
if (edge == Edge{}) {
|
|
continue
|
|
}
|
|
|
|
fmt.Printf(
|
|
"\t- Has a connection to %s\t(Travel Cost: %d)\n",
|
|
edge.To.Data.Name,
|
|
edge.Cost())
|
|
}
|
|
fmt.Println()
|
|
}
|
|
|
|
}
|