Previous
0 / 4

Module questions

DS-03 Β· Linked Lists and Pointer Invariants

Module DS-03DSJAVA

Sorted Chain Merge

DSJAVA β€’ Data Structures and Algorithms in Java

Browser-only practice

Problem Statement

Challenge lab in Linked Lists and Pointer Invariants

Mission

Merge two sorted linked chains without re-sorting.

Learning outcome: Merge two sorted node chains

Correctness contract

Invariant: Every live node is reachable from head exactly once, and the final next reference is null.

Required technique: Relink existing nodes from two sorted chains using a dummy head; never copy values into an array and re-sort.

Complexity target: time O(n+m); space O(n+m) nodes.

Input and output

Input: n, then n sorted integers, then m, then m sorted integers. Whitespace may be spaces or line breaks.

Output: Print the requested sequence on one line with single spaces and no trailing space. Return it as a String; Main.java prints it without adding other text.

Assumptions:

  • Both input sequences are sorted in nondecreasing order.

Before you code

  1. Restate the input and output contract, then predict the visible example without running code.
  2. Implement the core state transition: Relink existing nodes from two sorted chains using a dummy head; never copy values into an array and re-sort.
  3. Trace the smallest boundary case, verify exact formatting, and justify the authored time and auxiliary-space bounds.

Implement Practice.solve(Scanner sc). Keep every provided filename and public class name unchanged.

Sample input

3 1 4 7 3 2 3 9

Sample output

1 2 3 4 7 9

Why the sample works: Visible walkthrough for the ordinary non-trivial path. The smaller current node is linked next; ties use the first chain, and the final non-empty suffix is attached unchanged. Input `3 1 4 7 3 2 3 9` therefore produces `1 2 3 4 7 9`.

Progressive hints

Try the trace and first milestone before opening a hint. Open them in order.

Open hint 1

Hint 1 β€” Contract: identify what each parsed variable represents and write the invariant beside the loop or recursive method.

Open hint 2

Hint 2 β€” Next step: When values tie, consume the left input first; this keeps the merge stable.

Open hint 3

Hint 3 β€” Verification: compare the structure state before and after one operation, then test the smallest valid input and a duplicate or unreachable case when allowed.

Constraints

Input contract: n, then n sorted integers, then m, then m sorted integers.

  • Both input sequences are sorted in nondecreasing order.

Required technique: Relink existing nodes from two sorted chains using a dummy head; never copy values into an array and re-sort.

Output contract: Print the requested sequence on one line with single spaces and no trailing space.

Use Java 8-compatible code only. Keep the public class names and Practice.solve(Scanner sc) signature from the starter files.

Input Format

n, then n sorted integers, then m, then m sorted integers.

Output Format

Print the requested sequence on one line with single spaces and no trailing space.

Sample Testcases

Submit runs every public testcase in this browser. Results and code never leave this device.

Sample #1
Public sample
3 1 4 7 3 2 3 9
1 2 3 4 7 9
Visible walkthrough for the ordinary non-trivial path. The smaller current node is linked next; ties use the first chain, and the final non-empty suffix is attached unchanged. Input `3 1 4 7 3 2 3 9` therefore produces `1 2 3 4 7 9`.

Web terminal

C, C++, Java, and Python run locally in a browser VM. No worker or visualizer is used.

Saved in this browser
Editor settings