-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcircularLL.java
More file actions
137 lines (123 loc) · 3.17 KB
/
circularLL.java
File metadata and controls
137 lines (123 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
class Node {
int data;
Node next;
Node (int val) {
data = val;
next = null;
}
}
public class circularLL {
static void printList(Node head) {
if (head == null) return;
Node temp = head;
while (true) {
System.out.print(temp.data + " -> ");
temp = temp.next;
if (temp == head) break; // stop when back at head
}
System.out.println("(back to head)");
}
static Node insertingAtbegin(Node head, int val) {
Node newNode = new Node(val);
if(head == null) {
newNode.next = head;
return newNode;
}
Node temp = head;
while(temp.next!=head) {
temp = temp.next;
}
temp.next = newNode;
newNode.next = head;
return newNode;
}
static Node insertingAtEnd(Node head, int val) {
Node newNode = new Node(val);
if (head == null) {
newNode.next = newNode;
return newNode;
}
Node temp = head;
while(temp.next!=head) {
temp = temp.next;
}
temp.next = newNode;
newNode.next = head;
return head;
}
static Node insertingAtPos(Node head, int val, int pos) {
Node newNode = new Node(val);
if(pos<1) {
return head;
}
if(pos == 1) {
return insertingAtbegin(head, val);
}
Node curr = head;
for(int i=1;i<pos-1 && curr!=head;i++) {
curr = curr.next;
}
newNode.next = curr.next;
curr.next = newNode;
return head;
}
static Node deleteHead(Node head) {
if(head == null) {
return null;
}
if(head.next == head) {
return null;
}
Node temp = head;
while(temp.next!=head) {
temp = temp.next;
}
head = head.next;
temp.next = head;
return head;
}
static Node deleteEnd(Node head) {
if(head == null) {
return null;
}
if(head.next == head) {
return null;
}
Node temp = head;
while(temp.next.next!=head) {
temp = temp.next;
}
temp.next = head;
return head;
}
static Node deleteAtspe(Node head,int pos) {
if(head == null) {
return null;
}
if(pos==1) {
return deleteHead(head);
}
Node temp = head;
for(int i=1;i<pos-1&&temp.next!=head;i++) {
temp = temp.next;
}
Node toDelete = temp.next;
temp.next = toDelete.next;
return head;
}
public static void main(String[] args) {
Node head = new Node(10);
head.next = new Node(20);
head.next.next = new Node(30);
head.next.next.next = new Node(40);
head.next.next.next.next = head;
head = insertingAtbegin(head, 5);
head = insertingAtEnd(head, 50);
head = insertingAtPos(head, 35, 2);
head = deleteHead(head);
head = deleteEnd(head);
head = deleteAtspe(head, 2);
System.out.print("Linked List:");
printList(head);
}
}