Some "hello world"-style data structure objects. Helps with inane tech interview questions and/or teaching computer science - whichever comes first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.4 KiB

////////////////////////////////////////////////
// Linked List Node
// Start by defining a node.
// The data type is interface{}, which means we can define a type as a struct, just like we do here, and pass it as a data type.
// A linked list node is a burrito for data.
type Node struct {
data interface{}
next *Node
}
// Define an Append function for the Node struct.
// This appends some data to the linked list, right after node n (not at the end).
// Defined for this type
// \/\/\/
// Returns this type
// \/\/\/
func ( n *Node ) Append(data interface{}) *Node {
// If we are on the last node at the end of the list:
if n.Next == nil {
// The next item in the list is the data we are appending
n.Next = &Node{ data, nil }
} else {
// The next item in the list is the data we are appending,
// but we also link it to the (old) next item in the list,
// so we don't lose that data forever.
tmp := &Node{data, n.next}
n.Next = tmp
}
// Now return a pointer that points at the new node.
return n.Next
}
// Define a Print function for the Node struct.
// This prints the data.
func (n *Node) String() string {
return fmt.Sprintf("Node: %v", n.data)
}
////////////////////////////////////////////////
// Linked List
type LinkedList struct {
root Node*
}