温馨提示:这篇文章已超过239天没有更新,请注意相关的内容是否还可用!
链表合并是指将两个链表合并成一个新的链表。合并的过程是将两个链表的节点逐个比较,按照节点的值大小依次连接起来。
我们需要定义一个链表节点类,该类包含一个值和一个指向下一个节点的指针。示例代码如下:
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
this.next = null;
}
}
接下来,我们可以编写一个合并链表的函数,该函数接受两个链表的头节点作为参数,并返回合并后的链表的头节点。示例代码如下:
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
// 创建一个新的链表头节点
ListNode dummy = new ListNode(0);
// 创建一个指针用于遍历新链表
ListNode curr = dummy;
// 遍历两个链表,比较节点的值并连接到新链表中
while (l1 != null && l2 != null) {
if (l1.val < l2.val) {
curr.next = l1;
l1 = l1.next;
} else {
curr.next = l2;
l2 = l2.next;
}
curr = curr.next;
}
// 将剩余的节点连接到新链表的末尾
if (l1 != null) {
curr.next = l1;
} else {
curr.next = l2;
}
// 返回新链表的头节点
return dummy.next;
}
在上面的代码中,我们使用了一个虚拟头节点(dummy)来简化合并过程。我们还使用了一个指针(curr)来遍历新链表,并通过比较节点的值将节点连接到新链表的末尾。我们将剩余的节点连接到新链表的末尾,并返回新链表的头节点。
通过以上的代码示例,我们可以实现两个链表的合并,并得到一个新的链表。