Computer >> Máy Tính >  >> Lập trình >> Java

Hợp nhất một danh sách được liên kết vào một danh sách được liên kết khác ở các vị trí thay thế trong Java

Chúng tôi được cung cấp hai cấu trúc dữ liệu dưới dạng danh sách liên kết Giả sử, Danh sách_1 và Danh sách_2. Nhiệm vụ là hợp nhất các phần tử của danh sách được liên kết 'Danh sách_2' vào danh sách được liên kết 'Danh sách_1' ở vị trí thay thế và nếu chúng ta còn lại các phần tử không thể hợp nhất vào 'Danh sách_1' thì nó sẽ được in dưới dạng ' Liệt kê_2 'các phần tử còn lại.

Ví dụ-:

Trong -

Danh sách_1 =

Hợp nhất một danh sách được liên kết vào một danh sách được liên kết khác ở các vị trí thay thế trong Java

Danh sách_2 =

Hợp nhất một danh sách được liên kết vào một danh sách được liên kết khác ở các vị trí thay thế trong Java

Hết - Danh sách Hợp nhất là-:

Hợp nhất một danh sách được liên kết vào một danh sách được liên kết khác ở các vị trí thay thế trong Java

Giải thích - chúng tôi được cung cấp với hai danh sách, tức là Danh sách_1 và Danh sách_2. Chúng tôi đã hợp nhất các phần tử có thể có của danh sách_2 vào Danh sách_1 ở các vị trí thay thế. Vì vậy, các phần tử sau khi hợp nhất trong Danh sách_1 là 10-> 3-> 2-> 1-> 1-> 4-> 2-> 5-> 5 và trong Danh sách_2 là 7-> 2.

Trong -

Danh sách_1 =11 -> 12 -> 13

Danh sách_2 =14 -> 15 -> 16 -> 17 -> 18

Hết −Danh sách hợp nhất là -:11 -> 14 -> 12 -> 15 -> 13

Giải thích −chúng tôi được cung cấp với hai danh sách tức là Danh sách_1 và Danh sách_2. Chúng tôi đã hợp nhất các phần tử có thể có của danh sách_2 vào Danh sách_1 ở các vị trí thay thế. Vì vậy, các phần tử sau khi hợp nhất trong Danh sách_1 là 11 -> 14 -> 12 -> 15 -> 13 và trong Danh sách_2 là 16-> 17-> 18.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -

  • Tạo một nút đầu trỏ đến nút đầu tiên của danh sách được liên kết.

  • Tạo một lớp Node để tạo danh sách liên kết sẽ có giá trị và tiếp theo là thành viên dữ liệu. Xác định một hàm tạo mặc định là Node (int val) và đặt giá trị là val và tiếp theo là NULL.

  • Bên trong một phương thức trong add (int updated_value) để thêm các phần tử vào danh sách được liên kết.

    • Tạo một đối tượng dưới dạng new_node và chuyển updated_value cho hàm tạo mặc định.

    • Đặt new_node.next thành head và đặt new_node

  • Bên trong một hàm trong mergeList (danh sách TutorialPoint)

    • Tạo một đối tượng dưới dạng n1_curr và đặt thành head và n2_curr thành list.head

    • Tạo một đối tượng dưới dạng n1_next và n2_next

    • Bắt đầu Trong khi là n1_curr! =Null VÀ n2_curr! =Null. Bên trong While, đặt n1_next thành n1_curr.next, n2_next thành n2_curr.next, n2_curr.next thành n1_next, n1_curr.next thành n2_curr, n1_curr thành n1_next và n2_curr thành n2_next

    • Đặt list.head thành n2_curr

  • Bên trong phương thức main ()

    • Tạo một đối tượng dưới dạng danh sách TutorialPoint_1 thành danh sách TutorialPoint () mới và TutorialPoint_2 thành danh sách TutorialPoint ()

      mới
    • Thêm các phần tử vào list_1 dưới dạng list_1.add (13), list_1.add (12) và list_1.add (11).

    • Thêm các phần tử vào list_2 dưới dạng list_2.add (18), list_2.add (17), list_2.add (16), list_2.add (15) và list_2.add (14)

    • Gọi phương thức mergeList để hợp nhất các phần tử của list_2 thành list_1 dưới dạng list_1.mergeList (list_2)

    • In danh sách cuối cùng dưới dạng đầu ra.

Ví dụ

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();
   }
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

Merged list is:
11 14 12 15 13 16