Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.math.*;
- import java.security.*;
- import java.text.*;
- import java.util.*;
- import java.util.concurrent.*;
- import java.util.regex.*;
- public class Solution {
- static class SinglyLinkedListNode {
- public int data;
- public SinglyLinkedListNode next;
- public SinglyLinkedListNode(int nodeData) {
- this.data = nodeData;
- this.next = null;
- }
- }
- static class SinglyLinkedList {
- public SinglyLinkedListNode head;
- public SinglyLinkedListNode tail;
- public SinglyLinkedList() {
- this.head = null;
- this.tail = null;
- }
- public void insertNode(int nodeData) {
- SinglyLinkedListNode node = new SinglyLinkedListNode(nodeData);
- if (this.head == null) {
- this.head = node;
- } else {
- this.tail.next = node;
- }
- this.tail = node;
- }
- }
- public static void printSinglyLinkedList(SinglyLinkedListNode node, String sep, BufferedWriter bufferedWriter) throws IOException {
- while (node != null) {
- bufferedWriter.write(String.valueOf(node.data));
- node = node.next;
- if (node != null) {
- bufferedWriter.write(sep);
- }
- }
- }
- // Complete the mergeLists function below.
- /*
- * For your reference:
- *
- * SinglyLinkedListNode {
- * int data;
- * SinglyLinkedListNode next;
- * }
- *
- */
- static SinglyLinkedListNode mergeLists(SinglyLinkedListNode head1, SinglyLinkedListNode head2) {
- SinglyLinkedListNode head;
- SinglyLinkedListNode next = null;
- SinglyLinkedListNode firstCurrent = head1;
- SinglyLinkedListNode firstNext = head1.next;
- SinglyLinkedListNode secondCurrent = head2;
- SinglyLinkedListNode secondNext = head2.next;
- if (firstCurrent.data <= secondCurrent.data) {
- head = firstCurrent;
- firstCurrent = firstNext;
- firstNext = firstCurrent.next;
- if (firstCurrent == null) {
- next.next = secondCurrent;
- return head;
- }
- } else {
- head = secondCurrent;
- secondCurrent = secondNext;
- secondNext = secondCurrent.next;
- if (secondCurrent == null) {
- next.next = firstCurrent;
- return head;
- }
- }
- if (firstCurrent.data <= secondCurrent.data) {
- next = firstCurrent;
- firstCurrent = firstNext;
- firstNext = firstCurrent.next;
- if (firstCurrent == null) {
- next.next = secondCurrent;
- return head;
- }
- } else {
- next = secondCurrent;
- secondCurrent = secondNext;
- secondNext = secondCurrent.next;
- if (secondCurrent == null) {
- next.next = firstCurrent;
- return head;
- }
- }
- head.next = next;
- while (true) {
- if (firstCurrent.data <= secondCurrent.data) {
- next.next = firstCurrent;
- next = next.next;
- firstCurrent = firstNext;
- firstNext = firstCurrent.next;
- if (firstCurrent == null) {
- next.next = secondCurrent;
- break;
- }
- } else {
- next.next = secondCurrent;
- next = next.next;
- secondCurrent = secondNext;
- secondNext = secondCurrent.next;
- if (secondCurrent == null) {
- next.next = firstCurrent;
- break;
- }
- }
- }
- return head;
- }
- private static final Scanner scanner = new Scanner(System.in);
- public static void main(String[] args) throws IOException {
- BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
- int tests = scanner.nextInt();
- scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
- for (int testsItr = 0; testsItr < tests; testsItr++) {
- SinglyLinkedList llist1 = new SinglyLinkedList();
- int llist1Count = scanner.nextInt();
- scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
- for (int i = 0; i < llist1Count; i++) {
- int llist1Item = scanner.nextInt();
- scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
- llist1.insertNode(llist1Item);
- }
- SinglyLinkedList llist2 = new SinglyLinkedList();
- int llist2Count = scanner.nextInt();
- scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
- for (int i = 0; i < llist2Count; i++) {
- int llist2Item = scanner.nextInt();
- scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
- llist2.insertNode(llist2Item);
- }
- SinglyLinkedListNode llist3 = mergeLists(llist1.head, llist2.head);
- printSinglyLinkedList(llist3, " ", bufferedWriter);
- bufferedWriter.newLine();
- }
- bufferedWriter.close();
- scanner.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement