在 Java 中将一个链表以交替位置合并到另一个链表中
我们给出了两个数据结构作为链表,假设为 List_1 和 List_2。任务是将链表"List_2"的元素以交替位置合并到链表"List_1"中,如果剩下不能合并到"List_1"的元素,则将其打印为"List_2"剩余元素。
例如-:
In −
List_1 =
List_2 =
Out −合并后的列表为:
解释− 我们有两个列表,即 List_1 和 List_2。我们将 list_2 的可能元素合并到 List_1 中的交替位置。因此,合并后的 List_1 中的元素为 10- >3->2->1->1->4->2->5->5,而 List_2 中的元素为 7->2。
In −
List_1 = 11 -> 12 -> 13
List_2 = 14 -> 15 -> 16 -> 17 -> 18
Out −合并后的列表为 -: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
以 n1_curr != null AND n2_curr 为条件启动!= 空。在 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