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.

#### 49 lines 1.4 KiB Raw Permalink Blame History

 `////////////////////////////////////////////////` `// 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*` `}` ``` ```