@@ -6,12 +6,13 @@ public class CircularLinkedList {
6
6
public Node tail ;
7
7
public int size = 0 ;
8
8
9
+ // insert at Last
9
10
public void addLast (int data ) {
10
11
Node node = new Node (data );
11
12
if (head == null ) {
12
13
head = node ;
13
14
tail = node ;
14
- node .next = node ;
15
+ node .next = head ;
15
16
} else {
16
17
tail .next = node ;
17
18
node .next = head ;
@@ -20,6 +21,85 @@ public void addLast(int data) {
20
21
size ++;
21
22
}
22
23
24
+ // add first
25
+ public void addFirst (int data ) {
26
+ Node node = new Node (data );
27
+ if (head == null ) {
28
+ head = node ;
29
+ tail = node ;
30
+ }
31
+ node .next = head ;
32
+ head = node ;
33
+ size ++;
34
+ }
35
+
36
+ // insert at any
37
+ public void add (int data , int index ) {
38
+ if (index == 0 )
39
+ addFirst (data );
40
+ else if (index >= size - 1 )
41
+ addLast (data );
42
+ else {
43
+ Node node = new Node (data );
44
+ Node crr = head ;
45
+ int i = 1 ;
46
+ while (i ++ < index - 1 ) {
47
+ crr = crr .next ;
48
+ }
49
+ node .next = crr .next ;
50
+ crr .next = node ;
51
+ size ++;
52
+ }
53
+ }
54
+
55
+ // delete Last node
56
+ public int deleteLast () {
57
+ int data = tail .data ;
58
+ Node n = head ;
59
+ while (n .next .data != tail .data ) {
60
+ n = n .next ;
61
+ }
62
+ size --;
63
+ n .next = head ;
64
+ tail = n ;
65
+ return data ;
66
+ }
67
+
68
+ //delete First
69
+ public int deleteFirst () {
70
+ int data = head .data ;
71
+ head = head .next ;
72
+ tail .next = head ;
73
+ size --;
74
+ return data ;
75
+ }
76
+
77
+ // delete at any
78
+ public int delete (int index ) {
79
+ Node crr = head ;
80
+ if (index == 0 )
81
+ deleteFirst ();
82
+ if (index == size - 1 )
83
+ deleteLast ();
84
+ int i = 1 ;
85
+ while (i ++ < index )
86
+ crr = crr .next ;
87
+ int data = crr .next .data ;
88
+ crr .next = crr .next .next ;
89
+ size --;
90
+ return data ;
91
+ }
92
+
93
+ // middle of the linked list
94
+ public int middle () {
95
+ Node slow = head , fast = head ;
96
+ while (slow != null && fast .next != null ) {
97
+ slow = slow .next ;
98
+ fast = fast .next .next ;
99
+ }
100
+ return slow .data ;
101
+ }
102
+
23
103
//display the CircularLinkedList
24
104
public void display () {
25
105
Node n = head ;
@@ -39,5 +119,27 @@ public static void main(String[] args) {
39
119
cll .addLast (50 );
40
120
cll .display ();
41
121
System .out .println (cll .size );
122
+
123
+ cll .addFirst (1 );
124
+ cll .display ();
125
+ System .out .println (cll .size );
126
+
127
+ cll .add (15 , 3 );
128
+ cll .display ();
129
+ System .out .println (cll .size );
130
+
131
+ System .out .println ("Last Deleted Node => " + cll .deleteLast ());
132
+ cll .display ();
133
+ System .out .println (cll .size );
134
+
135
+ System .out .println ("First Deleted Node => " + cll .deleteFirst ());
136
+ cll .display ();
137
+ System .out .println (cll .size );
138
+
139
+ System .out .println ("Deleted Node => " + cll .delete (2 ));
140
+ cll .display ();
141
+ System .out .println (cll .size );
142
+
143
+ System .out .println (cll .middle ());
42
144
}
43
145
}
0 commit comments