Skip to content

Commit 182e00e

Browse files
authoredJan 16, 2022
Add files via upload
1 parent 6e4b24c commit 182e00e

10 files changed

+634
-0
lines changed
 
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
3+
Following is the Node class already written for the Linked List
4+
5+
class LinkedListNode<T> {
6+
T data;
7+
LinkedListNode<T> next;
8+
9+
public LinkedListNode(T data) {
10+
this.data = data;
11+
}
12+
}
13+
14+
*/
15+
16+
17+
18+
public class Solution {
19+
20+
public static LinkedListNode<Integer> skipMdeleteN(LinkedListNode<Integer> head, int M, int N) {
21+
//Your code goes here
22+
if (M==0)
23+
{
24+
return null;
25+
}
26+
if (N==0)
27+
{
28+
return head;
29+
}
30+
31+
LinkedListNode<Integer> node=head,delNode=null;
32+
while(node!=null)
33+
{
34+
for (int i=0;i<M-1 && node!=null;i++)
35+
{
36+
//System.out.print(node.data+" ");
37+
node=node.next;
38+
}
39+
//System.out.println();
40+
if (node==null)
41+
{
42+
break;
43+
}
44+
45+
delNode=node.next;
46+
for (int i=0;i<N && delNode!=null;i++)
47+
{
48+
//System.out.print(delNode.data+" ");
49+
delNode=delNode.next;
50+
}
51+
node.next=delNode;
52+
node=delNode;
53+
}
54+
55+
return head;
56+
}
57+
}

‎LINKED LIST 2/DELETE NODE.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
3+
Following is the Node class already written for the Linked List
4+
5+
class LinkedListNode<T> {
6+
T data;
7+
LinkedListNode<T> next;
8+
9+
public LinkedListNode(T data) {
10+
this.data = data;
11+
}
12+
}
13+
14+
*/
15+
16+
public class Solution {
17+
18+
19+
public static LinkedListNode<Integer> deleteNodeRec(LinkedListNode<Integer> head, int pos) {
20+
//Your code goes here
21+
if (head == null)
22+
{
23+
return head;
24+
}
25+
26+
if (pos==0)
27+
{
28+
head=head.next;
29+
return head;
30+
}
31+
else
32+
{
33+
LinkedListNode<Integer> smallerHead=deleteNodeRec(head.next,pos-1);
34+
head.next=smallerHead;
35+
return head;
36+
}
37+
}
38+
39+
}

‎LINKED LIST 2/EVEN AFTER ODD LL.txt

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
3+
Following is the Node class already written for the Linked List
4+
5+
class LinkedListNode<T> {
6+
T data;
7+
LinkedListNode<T> next;
8+
9+
public LinkedListNode(T data) {
10+
this.data = data;
11+
}
12+
}
13+
14+
*/
15+
16+
17+
public class Solution {
18+
19+
public static LinkedListNode<Integer> evenAfterOdd(LinkedListNode<Integer> head) {
20+
//Your code goes here
21+
if (head==null || head.next==null)
22+
{
23+
return head;
24+
}
25+
LinkedListNode<Integer> node=head,evenNode=null,oddNode=null,oddHead=null,evenHead=null;
26+
while(node!=null)
27+
{
28+
int data=node.data;
29+
//System.out.println(data);
30+
31+
if (data%2==0)
32+
{
33+
//System.out.println(data+" is divisble by 2");
34+
if (evenNode==null)
35+
{
36+
//System.out.println("Adding first node");
37+
evenNode=node;
38+
evenHead=node;
39+
}
40+
else
41+
{
42+
evenNode.next=node;
43+
evenNode=evenNode.next;
44+
}
45+
//System.out.println("Even numbers");
46+
//Runner.print(evenHead);
47+
48+
}
49+
else
50+
{
51+
//System.out.println(data+" is not divisble by 2");
52+
if (oddNode==null)
53+
{
54+
//System.out.println("Adding first node");
55+
oddNode=node;
56+
oddHead=node;
57+
}
58+
else
59+
{
60+
oddNode.next=node;
61+
oddNode=oddNode.next;
62+
}
63+
//System.out.println("Odd numbers");
64+
//Runner.print(oddHead);
65+
66+
}
67+
68+
//System.out.println();
69+
node=node.next;
70+
}
71+
//Runner.print(oddHead);
72+
//Runner.print(evenHead);
73+
if (oddHead==null)
74+
{
75+
return evenHead;
76+
}
77+
else
78+
{
79+
oddNode.next=evenHead;
80+
}
81+
82+
if (evenNode!=null)
83+
{
84+
evenNode.next=null;
85+
}
86+
87+
88+
return oddHead;
89+
}
90+
}

‎LINKED LIST 2/FIND A NODE IN LL.txt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
3+
Following is the Node class already written for the Linked List
4+
5+
class LinkedListNode<T> {
6+
T data;
7+
LinkedListNode<T> next;
8+
9+
public LinkedListNode(T data) {
10+
this.data = data;
11+
}
12+
}
13+
14+
*/
15+
16+
public class Solution {
17+
18+
19+
public static int findNodeRec(LinkedListNode<Integer> head, int n) {
20+
//Your code goes here
21+
if (head==null) //Empty linked list
22+
{
23+
return -1;
24+
}
25+
26+
if (head.data.equals(n))
27+
{
28+
return 0;
29+
}
30+
int smallIndex=findNodeRec(head.next,n);
31+
if (smallIndex==-1)
32+
{
33+
return smallIndex;
34+
}
35+
else
36+
{
37+
return smallIndex+1;
38+
}
39+
}
40+
41+
}

‎LINKED LIST 2/KREVERSE.txt

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
public class Solution {
2+
3+
public static LinkedListNode<Integer> reverseLinkedListRec(LinkedListNode<Integer> head) {
4+
//Your code goes here
5+
6+
if (head==null || head.next==null)
7+
{
8+
return head;
9+
}
10+
LinkedListNode<Integer> smallerHead=reverseLinkedListRec(head.next);
11+
LinkedListNode<Integer> node=smallerHead;
12+
while (node.next!=null)
13+
{
14+
node=node.next;
15+
}
16+
node.next=head;
17+
head.next=null;
18+
return smallerHead;
19+
}
20+
21+
public static LinkedListNode<Integer> findTail(LinkedListNode<Integer> head, int k)
22+
{
23+
for (int i=0;i<k && head.next!=null;i++)
24+
{
25+
head=head.next;
26+
}
27+
return head;
28+
29+
30+
}
31+
32+
public static int findLength(LinkedListNode<Integer> head)
33+
{
34+
int count=0;
35+
while(head.next!=null)
36+
{
37+
head=head.next;
38+
count=count+1;
39+
}
40+
return count;
41+
}
42+
43+
public static LinkedListNode<Integer> kReverse(LinkedListNode<Integer> head, int k) {
44+
//Your code goes here
45+
if (head==null || k==0 || k==1)
46+
{
47+
return head;
48+
}
49+
else if (k>findLength(head))
50+
{
51+
return reverseLinkedListRec(head);
52+
}
53+
54+
LinkedListNode<Integer> node=head,nextNode=null,tail=null,prevTail=null,newHead=null;
55+
while(node!=null)
56+
{
57+
tail=findTail(node,k-1);
58+
nextNode=tail.next;
59+
tail.next=null;
60+
newHead=reverseLinkedListRec(node);
61+
//Runner.print(newHead);
62+
if (node==head)
63+
{
64+
tail=head;
65+
tail.next=nextNode;
66+
head=newHead;
67+
68+
}
69+
else
70+
{
71+
tail=node;
72+
tail.next=nextNode;
73+
prevTail.next=newHead;
74+
75+
}
76+
node=nextNode;
77+
prevTail=tail;
78+
//Runner.print(head);
79+
80+
}
81+
return head;
82+
83+
84+
}
85+
}

‎LINKED LIST 2/MERGE 2 SORTED LL.txt

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
3+
Following is the Node class already written for the Linked List
4+
5+
class LinkedListNode<T> {
6+
T data;
7+
LinkedListNode<T> next;
8+
9+
public LinkedListNode(T data) {
10+
this.data = data;
11+
}
12+
}
13+
14+
*/
15+
16+
public class Solution {
17+
18+
public static LinkedListNode<Integer> mergeTwoSortedLinkedLists(LinkedListNode<Integer> head1, LinkedListNode<Integer> head2) {
19+
//Your code goes here
20+
if (head1==null)
21+
{
22+
return head2;
23+
}
24+
25+
if (head2==null)
26+
{
27+
return head1;
28+
}
29+
30+
LinkedListNode<Integer> newHead=null,node1=head1,node2=head2,newNode=null;
31+
int data1=node1.data,data2=node2.data;
32+
if (data1<data2)
33+
{
34+
newHead=node1;
35+
node1=node1.next;
36+
}
37+
else
38+
{
39+
newHead=node2;
40+
node2=node2.next;
41+
}
42+
newNode=newHead;
43+
while(node1!=null && node2!=null)
44+
{
45+
data1=node1.data;
46+
data2=node2.data;
47+
if (data1<data2)
48+
{
49+
newNode.next=node1;
50+
newNode=newNode.next;
51+
node1=node1.next;
52+
}
53+
else
54+
{
55+
newNode.next=node2;
56+
newNode=newNode.next;
57+
node2=node2.next;
58+
}
59+
}
60+
61+
while(node1!=null)
62+
{
63+
newNode.next=node1;
64+
newNode=newNode.next;
65+
node1=node1.next;
66+
}
67+
while (node2!=null)
68+
{
69+
newNode.next=node2;
70+
newNode=newNode.next;
71+
node2=node2.next;
72+
}
73+
return newHead;
74+
}
75+
76+
}

0 commit comments

Comments
 (0)
Please sign in to comment.