Tulis metode concatenate() yang mengambil dua daftar tertaut, list1 dan list2, dan menambahkan list2 ke akhir list1.

Misalnya jika daftar awalnya: list1:

head-->3-->6-->7-->2-->null

Daftar2:

head-->9-->5-->3-->null

List1 menjadi setelah penggabungan:

head-->3-->6-->7-->2-->9-->5-->3-->null

public static void concatenate(LinkedList list1, LinkedList list2) {
   //code


}
-1
Noor 13 Maret 2020, 23:34

1 menjawab

Jawaban Terbaik

Ide: Anda memerlukan pointer untuk menunjuk ke kepala list1. Kemudian pindahkan pointer ke elemen terakhir dari list1 dan tetapkan ke titik di sebelah kepala list2.

public class Node  
    { 
int data; 
Node next; 
Node(int d) {data = d; 
             next = null;} 
    } 



public static Node concatenate (Node head1, Node head2) //head1 points to head of list1, head2 points to head of list2
{
                Node temp=null;
                if (head1==NULL) //if the first linked list is empty
                                return (head2);
                if (head2==NULL) //if second linked list is empty
                                return (head1);

                temp=head1;       //place temporary pointer on the first node of the first linked list

                while (temp.next!=NULL) //move p to the last node
                                temp=temp.next;
                temp.next=head2;                           //address of the first node of the second linked list stored in the last node of the first linked list

                return (head1);
}
1
Nicole Douglas 13 Maret 2020, 21:22