# Insert node at end of linked list in go

Write a program which is create and add linked list node at the end (tail, last) position in golang.

Suppose we are inserted the following (10, 20, 30 ,40 ,50) node in a sequence.

``````package main
import "fmt"
// Go Program for
// Insert linked list element at end position

data int
}

}
type SingleLL struct {
}
func getSingleLL() * SingleLL {
return &SingleLL {nil}
}
// Create new node
} else {
// find last node
for (temp.next != nil) {
// Visit to next node
temp = temp.next
}
// Add node at last position
temp.next = node
}
}
func(this SingleLL) display() {
for (temp != nil) {
// Display node value
fmt.Print("  ", temp.data)
// Visit to next node
temp = temp.next
}
} else {
}
}
func main() {
var sll * SingleLL = getSingleLL()
// 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → NULL
sll.display()
}``````
`````` Linked List
1  2  3  4  5  6  7  8``````

Time complexity of above program is O(n). We can optimize above algorithm using one extra pointer. Which is hold the reference of last node. Below are implementation of this logic.

``````package main
import "fmt"
// Go Program for
// Insert linked list element at end position set B

data int
}
}
type SingleLL struct {
}
func getSingleLL() * SingleLL {
return &SingleLL {nil,nil}
}
// Create a new node
} else {
this.tail.next = node
}
this.tail = node
}
func(this SingleLL) display() {
return
}
for (temp != nil) {
fmt.Print( temp.data, " → ")
// Visit to next node
temp = temp.next
}
fmt.Print("NULL\n")
}
func main() {
var sll * SingleLL = getSingleLL()
// 10 → 20 → 30 → 40 → 50 → NULL
sll.display()
}``````
`````` Linked List
10 → 20 → 30 → 40 → 50 → NULL``````

Time complexity of above program is O(1).

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.