在 Java 中将一个链表合并到另一个链表的交替位置
我们得到两个数据结构作为链表,假设为 List_1 和 List_2。任务是将链表“List_2”的元素合并到链表“List_1”的交替位置,如果我们剩下无法合并到“List_1”的元素,则将其打印为“List_2”的剩余元素。
例如-
输入−
List_1 =

List_2 =

输出− 合并后的列表为-

解释− 给定两个列表,即 List_1 和 List_2。我们将 List_2 的可能元素合并到 List_1 的交替位置。因此,合并后 List_1 中的元素为 10 - >3->2->1->1->4->2->5->5,List_2 中的元素为 7->2。
输入−
List_1 = 11 -> 12 -> 13
List_2 = 14 -> 15 -> 16 -> 17 -> 18
输出−合并后的列表为:11 -> 14 -> 12 -> 15 -> 13
解释−给定两个列表,即 List_1 和 List_2。我们将 List_2 的可能元素合并到 List_1 的交替位置。因此,合并后 List_1 中的元素为 11 - > 14 -> 12 -> 15 -> 13,List_2 中的元素为 16->17->18。
下面程序中使用的方案如下:
创建一个头节点,它将指向链表的第一个节点。
创建一个 Node 类来创建链表,它将具有 value 和 next 作为数据成员。定义一个默认构造函数作为 Node(int val),并将 value 设置为 val,next 设置为 NULL。
在 add(int updated_value) 方法内部,向链表添加元素。
创建一个对象作为 new_node,并将 updated_value 传递给默认构造函数。
将 new_node.next 设置为 head,并将 head 设置为 new_node
在 mergeList(TutorialPoint list) 函数内部
创建一个对象作为 n1_curr 并将其设置为 head,并将 n2_curr 设置为 list.head
创建一个对象作为 n1_next 和 n2_next
启动 While 循环,条件为 n1_curr != null 且 n2_curr != null。在 While 循环内部,将 n1_next 设置为 n1_curr.next,n2_next 设置为 n2_curr.next,n2_curr.next 设置为 n1_next,n1_curr.next 设置为 n2_curr,n1_curr 设置为 n1_next,n2_curr 设置为 n2_next
将 list.head 设置为 n2_curr
在 main() 方法内部
创建一个对象作为 TutorialPoint list_1,指向 new TutorialPoint(),以及 TutorialPoint list_2,指向 new TutorialPoint()
向 list_1 添加元素,如 list_1.add(13)、list_1.add(12) 和 list_1.add(11)。
向 list_2 添加元素,如 list_2.add(18)、list_2.add(17)、list_2.add(16)、list_2.add(15) 和 list_2.add(14)
调用 mergeList 方法将 list_2 的元素合并到 list_1,如 list_1.mergeList(list_2)
打印最终列表作为输出。
示例
public class TutorialPoint{
Node head;
class Node{
int value;
Node next;
Node(int val){
value = val;
next = null;
}
}
void add(int updated_value){
Node new_node = new Node(updated_value);
new_node.next = head;
head = new_node;
}
void mergeList(TutorialPoint list){
Node n1_curr = head, n2_curr = list.head;
Node n1_next, n2_next;
while (n1_curr != null && n2_curr != null){
n1_next = n1_curr.next;
n2_next = n2_curr.next;
n2_curr.next = n1_next;
n1_curr.next = n2_curr;
n1_curr = n1_next;
n2_curr = n2_next;
}
list.head = n2_curr;
}
public static void main(String args[]){
TutorialPoint list_1 = new TutorialPoint();
TutorialPoint list_2 = new TutorialPoint();
list_1.add(13);
list_1.add(12);
list_1.add(11);
list_2.add(18);
list_2.add(17);
list_2.add(16);
list_2.add(15);
list_2.add(14);
list_1.mergeList(list_2);
System.out.println("Merged list is:");
Node temp = list_1.head;
while (temp != null){
System.out.print(temp.value + " ");
temp = temp.next;
}
System.out.println();
}
}输出
如果我们运行以上代码,它将生成以下输出
Merged list is: 11 14 12 15 13 16
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP