small adjustments
This commit is contained in:
parent
78cf24be0c
commit
ab4115c1e1
|
@ -6,8 +6,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
n := new(graph.Node)
|
n := &graph.Node{Value: "1"}
|
||||||
n.Value = "1"
|
|
||||||
n2 := new(graph.Node)
|
n2 := new(graph.Node)
|
||||||
n2.Value = "2"
|
n2.Value = "2"
|
||||||
n3 := new(graph.Node)
|
n3 := new(graph.Node)
|
||||||
|
@ -16,7 +15,7 @@ func main() {
|
||||||
n.Connect(n2)
|
n.Connect(n2)
|
||||||
n.Connect(n3)
|
n.Connect(n3)
|
||||||
n2.Connect(n3)
|
n2.Connect(n3)
|
||||||
n.DisconnectAll()
|
//n.DisconnectAll()
|
||||||
fmt.Println(n.IsConnectedTo(n3))
|
fmt.Println(n.IsConnectedTo(n3))
|
||||||
fmt.Println("n -> n2: ", n2.IsConnectedTo(n), " n <- n2: ", n.IsConnectedTo(n2))
|
fmt.Println("n -> n2: ", n2.IsConnectedTo(n), " n <- n2: ", n.IsConnectedTo(n2))
|
||||||
fmt.Println("n -> n3: ", n.IsConnectedTo(n3), " n <- n3: ", n3.IsConnectedTo(n))
|
fmt.Println("n -> n3: ", n.IsConnectedTo(n3), " n <- n3: ", n3.IsConnectedTo(n))
|
||||||
|
|
17
hello.go
17
hello.go
|
@ -1,17 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import(
|
|
||||||
"lib/collection"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
var s collection.Stack
|
|
||||||
s.Push("world")
|
|
||||||
s.Push("hello, ")
|
|
||||||
for s.Size() > 0 {
|
|
||||||
fmt.Print(s.Pop())
|
|
||||||
}
|
|
||||||
fmt.Println()
|
|
||||||
// Output: hello, world
|
|
||||||
}
|
|
|
@ -4,41 +4,31 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
//Node a graph node which can contain connections to other nodes
|
//Node a graph node which can contain Connections to other nodes
|
||||||
type Node struct {
|
type Node struct {
|
||||||
Value string
|
Value string
|
||||||
connections []*Node
|
Connections []*Node
|
||||||
messages []string
|
Messages []string
|
||||||
}
|
}
|
||||||
|
|
||||||
//GetConnection returns the i'th connected node if it exists
|
//GetConnection returns the i'th connected node if it exists
|
||||||
func (n *Node) GetConnection(i int) (*Node, error) {
|
func (n *Node) GetConnection(i int) (*Node, error) {
|
||||||
if n.NrOfConnectedNodes() > i {
|
if len(n.Connections) > i && i >= 0 {
|
||||||
return n.connections[i], nil
|
return n.Connections[i], nil
|
||||||
}
|
}
|
||||||
return n, fmt.Errorf("slice out of bounds")
|
return n, fmt.Errorf("slice out of bounds")
|
||||||
}
|
}
|
||||||
|
|
||||||
//GetConnections returns all connections
|
|
||||||
func (n *Node) GetConnections() []*Node {
|
|
||||||
return n.connections
|
|
||||||
}
|
|
||||||
|
|
||||||
//GetMessages returns all messages in this Node
|
|
||||||
func (n *Node) GetMessages() []string {
|
|
||||||
return n.messages
|
|
||||||
}
|
|
||||||
|
|
||||||
//Connect connects two nodes
|
//Connect connects two nodes
|
||||||
func (n *Node) Connect(otherNode *Node) {
|
func (n *Node) Connect(otherNode *Node) {
|
||||||
n.connections = append(n.connections, otherNode)
|
n.Connections = append(n.Connections, otherNode)
|
||||||
otherNode.connections = append(otherNode.connections, n)
|
otherNode.Connections = append(otherNode.Connections, n)
|
||||||
}
|
}
|
||||||
|
|
||||||
//SetPointTo sets this Node to point towards the given Node
|
//SetPointTo sets this Node to point towards the given Node
|
||||||
func (n *Node) SetPointTo(otherNode *Node) {
|
func (n *Node) SetPointTo(otherNode *Node) {
|
||||||
if n.IsConnectedTo(otherNode) == false {
|
if n.IsConnectedTo(otherNode) == false {
|
||||||
n.connections = append(n.connections, otherNode)
|
n.Connections = append(n.Connections, otherNode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +37,7 @@ func (n *Node) RemovePointerTo(otherNode *Node) int {
|
||||||
fmt.Println(otherNode)
|
fmt.Println(otherNode)
|
||||||
i := n.GetIndexOf(otherNode)
|
i := n.GetIndexOf(otherNode)
|
||||||
if i != -1 {
|
if i != -1 {
|
||||||
n.connections = append(n.connections[:i], n.connections[i+1:]...)
|
n.Connections = append(n.Connections[:i], n.Connections[i+1:]...)
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
return -1
|
return -1
|
||||||
|
@ -58,9 +48,9 @@ func (n *Node) Disconnect(otherNode *Node) int {
|
||||||
i := n.GetIndexOf(otherNode)
|
i := n.GetIndexOf(otherNode)
|
||||||
j := otherNode.GetIndexOf(n)
|
j := otherNode.GetIndexOf(n)
|
||||||
if i != -1 && j != -1 {
|
if i != -1 && j != -1 {
|
||||||
//remove othernode from n.connections, and remove n from otherNode.connections
|
//remove othernode from n.Connections, and remove n from otherNode.Connections
|
||||||
n.connections = append(n.connections[:i], n.connections[i+1:]...)
|
n.Connections = append(n.Connections[:i], n.Connections[i+1:]...)
|
||||||
otherNode.connections = append(otherNode.connections[:j], otherNode.connections[j+1:]...)
|
otherNode.Connections = append(otherNode.Connections[:j], otherNode.Connections[j+1:]...)
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
return -1
|
return -1
|
||||||
|
@ -68,7 +58,7 @@ func (n *Node) Disconnect(otherNode *Node) int {
|
||||||
|
|
||||||
//DisconnectAll disconnects all Nodes
|
//DisconnectAll disconnects all Nodes
|
||||||
func (n *Node) DisconnectAll() {
|
func (n *Node) DisconnectAll() {
|
||||||
for _, v := range n.connections {
|
for _, v := range n.Connections {
|
||||||
n.Disconnect(v)
|
n.Disconnect(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,7 +76,7 @@ func (n *Node) IsConnectedTo(otherNode *Node) bool {
|
||||||
//GetIndexOf gets the index of the specified node.
|
//GetIndexOf gets the index of the specified node.
|
||||||
//May alternatively be used to check if n is pointing to otherNode
|
//May alternatively be used to check if n is pointing to otherNode
|
||||||
func (n *Node) GetIndexOf(otherNode *Node) int {
|
func (n *Node) GetIndexOf(otherNode *Node) int {
|
||||||
for i, v := range n.connections {
|
for i, v := range n.Connections {
|
||||||
if v == otherNode { //addresses are compared
|
if v == otherNode { //addresses are compared
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
|
@ -94,12 +84,7 @@ func (n *Node) GetIndexOf(otherNode *Node) int {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
//NrOfConnectedNodes number of nodes connected to this node
|
//InsertMessage inserts a string message in the Messages field of this node
|
||||||
func (n *Node) NrOfConnectedNodes() int {
|
|
||||||
return len(n.connections)
|
|
||||||
}
|
|
||||||
|
|
||||||
//InsertMessage inserts a string message in the messages field of this node
|
|
||||||
func (n *Node) InsertMessage(message string) {
|
func (n *Node) InsertMessage(message string) {
|
||||||
n.messages = append(n.messages, message) //append returns a new slice, so we have to replace it
|
n.Messages = append(n.Messages, message) //append returns a new slice, so we have to replace it
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user