Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fba4ddd

Browse files
added circular linked list with complete implementation
1 parent be39429 commit fba4ddd

File tree

3 files changed

+118
-1
lines changed

3 files changed

+118
-1
lines changed

‎CircularLinkedList/CircularLinkedList.java

Lines changed: 103 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ public class CircularLinkedList {
66
public Node tail;
77
public int size = 0;
88

9+
// insert at Last
910
public void addLast(int data) {
1011
Node node = new Node(data);
1112
if (head == null) {
1213
head = node;
1314
tail = node;
14-
node.next = node;
15+
node.next = head;
1516
} else {
1617
tail.next = node;
1718
node.next = head;
@@ -20,6 +21,85 @@ public void addLast(int data) {
2021
size ++;
2122
}
2223

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+
23103
//display the CircularLinkedList
24104
public void display() {
25105
Node n = head;
@@ -39,5 +119,27 @@ public static void main(String[] args) {
39119
cll.addLast(50);
40120
cll.display();
41121
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());
42144
}
43145
}

‎DoublyLinkedList/DoublyLinkedList.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package DoublyLinkedList;
2+
3+
public class DoublyLinkedList {
4+
}

‎DoublyLinkedList/Node.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package DoublyLinkedList;
2+
3+
public class Node {
4+
int data;
5+
Node next;
6+
Node prev;
7+
8+
public Node(int data) {
9+
this.data = data;
10+
}
11+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /