เราได้รับโครงสร้างข้อมูลสองโครงสร้างเป็นรายการที่เชื่อมโยง สมมติว่า 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