Skip to content

Commit 651b0f2

Browse files
Adding Go code for Single LinkedList
1 parent 51546fa commit 651b0f2

File tree

3 files changed

+122
-0
lines changed

3 files changed

+122
-0
lines changed

Go/Go

1.98 MB
Binary file not shown.

Go/linkedlist/singleLinkedList.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package linkedlist
2+
3+
import "fmt"
4+
5+
type Node struct {
6+
Val int
7+
Next *Node
8+
}
9+
10+
type SinglyLinkedList struct {
11+
Head *Node
12+
Len int
13+
}
14+
15+
func (l *SinglyLinkedList) Print() {
16+
pointer := l.Head
17+
fmt.Println("*** PRINTING ****")
18+
for pointer != nil {
19+
fmt.Println(pointer.Val)
20+
pointer = pointer.Next
21+
}
22+
}
23+
24+
func (l *SinglyLinkedList) InsertAtIndex(index, val int) {
25+
count := 0
26+
n := &Node{Val: val, Next: nil}
27+
pointer := l.Head
28+
previous := pointer
29+
30+
for ; pointer != nil; count++ {
31+
if count == index {
32+
n.Next = previous.Next
33+
previous.Next = n
34+
return
35+
}
36+
previous = pointer
37+
pointer = pointer.Next
38+
39+
}
40+
}
41+
42+
func (l *SinglyLinkedList) InsertAtEnd(val int) {
43+
n := &Node{Val: val, Next: nil}
44+
if l.Head == nil {
45+
l.Head = n
46+
return
47+
}
48+
49+
pointer := l.Head
50+
for pointer.Next != nil {
51+
pointer = pointer.Next
52+
}
53+
pointer.Next = n
54+
}
55+
56+
func (l *SinglyLinkedList) InsertAtStart(val int) {
57+
n := &Node{Val: val, Next: nil}
58+
if l.Head == nil {
59+
l.Head = n
60+
return
61+
}
62+
63+
tempHead := l.Head
64+
l.Head = n
65+
l.Head.Next = tempHead
66+
}
67+
68+
func (l *SinglyLinkedList) DeleteAtStart() {
69+
if l.Head == nil {
70+
return
71+
}
72+
l.Head = l.Head.Next
73+
}
74+
75+
func (l *SinglyLinkedList) DeleteAtEnd() {
76+
if l.Head == nil {
77+
return
78+
}
79+
pointer := l.Head
80+
previous := pointer
81+
for pointer.Next == nil {
82+
previous = pointer
83+
pointer = pointer.Next
84+
}
85+
previous.Next = nil
86+
}
87+
88+
func (l *SinglyLinkedList) DeleteAtIndex(index int) {
89+
count := 0
90+
pointer := l.Head
91+
previous := pointer
92+
93+
for ; pointer != nil; count++ {
94+
if count == index {
95+
previous.Next = pointer.Next
96+
}
97+
previous = pointer
98+
pointer = pointer.Next
99+
}
100+
}

Go/main.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/bhavnavarshney/Algorithms-and-Data-Structures/Go/linkedlist"
7+
)
8+
9+
func main() {
10+
fmt.Println("***** Singly LinkedList *****")
11+
l := linkedlist.SinglyLinkedList{}
12+
l.InsertAtEnd(5)
13+
l.InsertAtStart(100)
14+
l.InsertAtEnd(200)
15+
l.InsertAtIndex(1, 3)
16+
l.Print() // 100 3 5 200
17+
l.DeleteAtIndex(2) // 100 3 200
18+
l.DeleteAtStart() // 3 200
19+
l.DeleteAtEnd() // 3
20+
l.Print()
21+
22+
}

0 commit comments

Comments
 (0)