เราได้รับโครงสร้างข้อมูลสองโครงสร้างเป็นรายการที่เชื่อมโยง สมมติว่า 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 เพื่อสร้างรายการเชื่อมโยงซึ่งจะมีค่าและต่อไปเป็นสมาชิกข้อมูล กำหนดคอนสตรัคเตอร์เริ่มต้นเป็น Node(int val) และตั้งค่าเป็น val และถัดไปเป็น NULL
-
ภายในวิธีการใน add(int updated_value) เพื่อเพิ่มองค์ประกอบในรายการที่เชื่อมโยง
-
สร้างวัตถุเป็น new_node และส่ง updated_value ไปยังตัวสร้างเริ่มต้น
-
ตั้งค่า new_node.next เป็น head และไปที่ new_node
-
-
ภายในฟังก์ชันใน mergeList(รายการ TutorialPoint)
-
สร้างวัตถุเป็น n1_curr และตั้งค่าเป็น head และ n2_curr เป็น list.head
-
สร้างวัตถุเป็น n1_next และ n2_next
-
เริ่มในขณะที่ 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_ncurr ถึง n2
-
ตั้งค่า list.head เป็น n2_curr
-
-
ภายในเมธอด main()
-
สร้างวัตถุเป็น TutorialPoint list_1 ให้กับ TutorialPoint() และ TutorialPoint list_2 ใหม่เป็น 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