利用java根据输入的链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的
时间: 2024-12-05 13:11:26 浏览: 11
在Java中,可以通过以下步骤将两个升序链表合并为一个新的升序链表:
1. 创建一个新的链表头节点。
2. 遍历两个链表,比较当前节点的值,将较小的节点添加到新链表中。
3. 重复步骤2,直到其中一个链表遍历完。
4. 将剩余的链表节点添加到新链表的末尾。
5. 返回新链表的头节点。
以下是一个示例代码:
```java
class ListNode {
int val;
ListNode next;
ListNode(int val) { this.val = val; }
}
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(0);
ListNode current = dummy;
while (l1 != null && l2 != null) {
if (l1.val <= l2.val) {
current.next = l1;
l1 = l1.next;
} else {
current.next = l2;
l2 = l2.next;
}
current = current.next;
}
if (l1 != null) {
current.next = l1;
}
if (l2 != null) {
current.next = l2;
}
return dummy.next;
}
// 辅助方法:打印链表
public void printList(ListNode node) {
while (node != null) {
System.out.print(node.val + " ");
node = node.next;
}
}
// 测试方法
public static void main(String[] args) {
Solution solution = new Solution();
// 创建第一个升序链表: 1->3->5
ListNode l1 = new ListNode(1);
l1.next = new ListNode(3);
l1.next.next = new ListNode(5);
// 创建第二个升序链表: 2->4->6
ListNode l2 = new ListNode(2);
l2.next = new ListNode(4);
l2.next.next = new ListNode(6);
// 合并链表
ListNode mergedList = solution.mergeTwoLists(l1, l2);
// 打印合并后的链表
solution.printList(mergedList);
}
}
```
这个代码定义了一个`ListNode`类来表示链表节点,并实现了一个`mergeTwoLists`方法来合并两个升序链表。`main`方法中创建了两个升序链表并调用`mergeTwoLists`方法进行合并,最后打印合并后的链表。
阅读全文