File tree Expand file tree Collapse file tree 3 files changed +122
-0
lines changed Expand file tree Collapse file tree 3 files changed +122
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments