Minggu, 21 November 2010

3. Delete Node pada Linked List

Delete Node at First position


Menghapus node diawal sangatlah mudah karena anda tidak perlu melakukan traverse/penelusuran. Perhatikan kode program C++ berikut ini beserta komentarnya.

node *temp;    // deklarasikan variable pointer bertipe node
temp = head;   // pointer temp menunjuk ke alamat yg sama dengan yang ditunjuk head.
// ini bukan merupakan duplikasi, ibarat satu orang dengan nama Arisandi Hutama, bisa
// mempunyai 2 nama panggilan yang berbeda, di rumah dipanggil Ari, di kampus dipanggil Sandi
// yang keduanya (head dan temp), menunjuk ke obyek yang sama. 




head = head->next;  // Ubah alamat pointer head sekarang menunjuk ke node kedua / selanjutnya.
                                //  Pada kondisi ini, pointer temp masih menunjuk ke node yang pertama
 

temp->next = NULL   // ubah pointer next pada node pertama ke arah null.
free(temp); // karena pointer temp sekarang hanya menunjuk node pertama dan yang berikutnya null,
                  // maka data siap dihapus dengan fungsi free

Delete Node at Last position

Untuk menghapus node pada posisi terakhir, langkah pertama yang harus anda lakukan adalah mendeklarasi var pointer temp dan inisialisasi bahwa temp = head (pointer sama-sama menunjuk node yang sama). Setelah itu anda harus menelusuri suatu linked list dan berhenti tepat satu node sebelum node akhir (lihat gambar di atas). 

Proses hapus dimulai setelah itu.  Ketikan langkah berikut :
node *del_temp;
del_temp = temp->next; // arahkan pointer del_temp ke arah node setelah node yang ditunjuk temp
temp->next = NULL; // lalu arahkan atribut next dari pointer temp ke NULL agar linked list terputus
                                  // hubungan dengan node terakhir.
free(del_temp); // terakhir, hapus node yang ditunjuk oleh pointer del_temp

Maka node terakhir akan terhapus.

Delete Node at Certain position


Untuk menghapus node pada posisi tertentu, langkahnya hampir sama dengan menghapus node pada posisi terakhir. Ketika seorang user ingin menghapus node ke-3 (lihat gambar di atas), maka buat 2 var pointer yaitu: temp menunjuk ke node ke-2 (tepat satu node, sebelum node yang akan dihapus / node ke-3) dan del_temp yang menunjuk node yang akan dihapus / node ke-3. 

Proses dimulai dengan langkah mengarahkan pointer next dari temp ke pointer next dari del_temp. Lalu atribut next dari var pointer del_temp harus diubah ke NULL agar terputus hubungan dengan linked list. Langkah terakhir adalah menghapus node yg ditunjuk pointer del_temp dengan perintah free. Selesai.

4 komentar: