This shows you the differences between two versions of the page.
| 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 allspark | snippets:golang:containers:singlelist [2018/03/20 12:16] (current) – allspark | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | # simple linked list | ||
| + | |||
| + | ```go | ||
| + | package main | ||
| + | |||
| + | import " | ||
| + | |||
| + | 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 := & | ||
| + | |||
| + | list.Append(a) | ||
| + | } | ||
| + | { | ||
| + | b := & | ||
| + | |||
| + | list.Append(b) | ||
| + | } | ||
| + | |||
| + | fmt.Println(list.Count()) | ||
| + | |||
| + | } | ||
| + | ``` | ||