User Tools

Site Tools


snippets:golang:containers:singlelist

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
snippets:golang:containers:singlelist [2018/03/20 12:12] – ↷ Page name changed from snippets:golang:containers:simplelist to snippets:golang:containers:singlelist allsparksnippets:golang:containers:singlelist [2018/03/20 12:16] (current) allspark
Line 1: Line 1:
 +# simple linked list
  
 +
 +```go
 +package main
 +
 +import "fmt"
 +
 +type MyListElement struct {
 + Name string
 + Age  int
 +
 + next *MyListElement
 +}
 +
 +func (i *MyListElement) Next() *MyListElement {
 + return i.next
 +}
 +
 +type MyList struct {
 + Head *MyListElement
 +}
 +
 +func (list *MyList) Append(item *MyListElement) {
 + if list.Head == nil {
 + list.Head = item
 + return
 + }
 +
 + i := list.Head
 + for ; i != nil && i.next != nil; i = i.next {
 + }
 + i.next = item
 + item.next = nil
 +}
 +
 +func (list *MyList) Count() int {
 + count := 0
 +
 + for i := list.Head; i != nil; i = i.next {
 + count += 1
 + }
 + return count
 +}
 +
 +func main() {
 + list := MyList{}
 +
 + {
 + a := &MyListElement{Name: "Max", Age: 23}
 +
 + list.Append(a)
 + }
 + {
 + b := &MyListElement{Name: "Hans", Age: 42}
 +
 + list.Append(b)
 + }
 +
 + fmt.Println(list.Count())
 +
 +}
 +```
snippets/golang/containers/singlelist.1521544375.txt.gz · Last modified: by allspark