I/O:
5 10 20 30 40 50 107 9 12 15 37 43 44 48 52 56
O/P:
7 9 10 12 15 20 30 37 40 43 44 48 50 52 56 10 20 30 40 507 9 12 15 37 43 44 48 52 56
package pep.Day15;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
public class Merge_Two_Sorted_LinkedLists {
public static class Node {
int data;
Node next;
}
public static class LinkedList {
Node head;
Node tail;
int size;
void addLast(int val) {
Node temp = new Node();
temp.data = val;
temp.next = null;
if (size == 0) {
head = tail = temp;
} else {
tail.next = temp;
tail = temp;
}
size++;
}
public int size() {
return size;
}
public void display() {
for (Node temp = head; temp != null; temp = temp.next) {
System.out.print(temp.data + " ");
}
System.out.println();
}
public void removeFirst() {
if (size == 0) {
System.out.println("List is empty");
} else if (size == 1) {
head = tail = null;
size = 0;
} else {
head = head.next;
size--;
}
}
public int getFirst() {
if (size == 0) {
System.out.println("List is empty");
return -1;
} else {
return head.data;
}
}
public int getLast() {
if (size == 0) {
System.out.println("List is empty");
return -1;
} else {
return tail.data;
}
}
public int getAt(int idx) {
if (size == 0) {
System.out.println("List is empty");
return -1;
} else if (idx < 0 || idx >= size) {
System.out.println("Invalid arguments");
return -1;
} else {
Node temp = head;
for (int i = 0; i < idx; i++) {
temp = temp.next;
}
return temp.data;
}
}
public void addFirst(int val) {
Node temp = new Node();
temp.data = val;
temp.next = head;
head = temp;
if (size == 0) {
tail = temp;
}
size++;
}
public void addAt(int idx, int val) {
if (idx < 0 || idx > size) {
System.out.println("Invalid arguments");
} else if (idx == 0) {
addFirst(val);
} else if (idx == size) {
addLast(val);
} else {
Node node = new Node();
node.data = val;
Node temp = head;
for (int i = 0; i < idx - 1; i++) {
temp = temp.next;
}
node.next = temp.next;
temp.next = node;
size++;
}
}
public int mid() {
Node f = head;
Node s = head;
while (f.next != null && f.next.next != null) {
f = f.next.next;
s = s.next;
}
return s.data;
}
// write your code here
public static LinkedList mergeTwoSortedLists(LinkedList l1, LinkedList l2) {
LinkedList ll = new LinkedList();
Node p1 = l1.head, p2 = l2.head;
while (p1 != null && p2 != null) {
if (p1.data < p2.data) {
ll.addLast(p1.data);
p1 = p1.next;
} else {
ll.addLast(p2.data);
p2 = p2.next;
}
}
while (p1 != null) {
ll.addLast(p1.data);
p1 = p1.next;
}
while (p2 != null) {
ll.addLast(p2.data);
p2 = p2.next;
}
return ll;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n1 = Integer.parseInt(br.readLine());
LinkedList l1 = new LinkedList();
String[] values1 = br.readLine().split(" ");
for (int i = 0; i < n1; i++) {
int d = Integer.parseInt(values1[i]);
l1.addLast(d);
}
int n2 = Integer.parseInt(br.readLine());
LinkedList l2 = new LinkedList();
String[] values2 = br.readLine().split(" ");
for (int i = 0; i < n2; i++) {
int d = Integer.parseInt(values2[i]);
l2.addLast(d);
}
LinkedList merged = LinkedList.mergeTwoSortedLists(l1, l2);
merged.display();
l1.display();
l2.display();
}
}
No comments:
Post a Comment