在Java中的交替位置将一个链表合并到另一个链表中
我们有两个数据结构作为链表假设,List_1 和 List_2。任务是将链表'List_2'的元素合并到链表'List_1'的备用位置,如果我们留下无法合并到'List_1'的元素,那么它将打印为' List_2' 剩余元素。
例如-:
在 -
列表_1 =
列表_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。
在 -
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 != 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 to newTutorialPoint()和 TutorialPoint list_2 to newTutorialPoint()
将元素作为 list_1.add(13)、list_1.add(12) 和 list_1.add(11) 添加到 list_1。
将元素添加到 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("合并列表为:");
Node temp = list_1.head;
while (temp != null){
System.out.print(temp.value + " ");
temp = temp.next;
}
System.out.println();
}
}
如果我们运行上面的代码,它将生成以下输出
合并列表为:11 14 12 15 13 16
以上是 在Java中的交替位置将一个链表合并到另一个链表中 的全部内容, 来源链接: utcz.com/z/363264.html