Rabu, 03 November 2010

2. Insert Node dan Traverse LL

 a) Insert Node at First position


Untuk memasukan node di posisi awal, kita harus terlebih dahulu membuat node baru, lalu menyambungnya dengan linked list yang sudah ada. Terakhir, ubah pointer head ke node yg baru dibuat.

cout << "MASUKAN DATA :"; // cetak ke layar
cin >> angka; // baca data dari keyboard

node *temp;               // deklarasi var pointer yang menunjuk ke node.
temp = (node*)malloc(sizeof(node)); // ciptakan node baru kosong
temp->data = angka;  // isi data
temp->next = head;    // sambung alamat berikutnya ke arah alamat yg ditunjuk head
head = temp;              // ubah alamat pointer head untuk menunjuk temp.
temp = NULL;           // ubah pointer temp ke null agar tidak menunjuk kemanapun.



 b) Traverse Linked List  (Penelusuran/Pergerakan pointer)



Untuk menggerakan pointer, sebaiknya anda mendeklarasi pointer bertipe node, misalnya node *temp; bukan memindah pointer head. Perhatian ! Jika anda telah terlanjur mengubah posisi pointer head bergerak ke arah kanan, maka semua node yang disebelah kiri, tidak akan bisa diakses kembali karena pada contoh ini kita hanya menggunakan Single Linked List (forwad only). 

Sebuah linked list sebenarnya tidak mengetahui berapa jumlah node/gerbong yang ikut dengannya, untuk mengetahuinya maka ditugaskan sebuah variable pointer yaitu temp untuk menelusuri/bergerak sampai alamat sebuah node = NULL yang meng-indikasikan akhir dari suatu linked list. Berikut ini kode programnya.

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.

// Dengan 2 pointer menunjuk linked list yang sama, maka salah satu pointer,
// yaitu temp ditugaskan untuk bergerak menelusuri linked list
// dan mencetak seluruh isi node
while( temp != NULL )
{
 cout<< temp1->data<<"-"; // Tampilkan tiap-tiap node yg ada pada linked list
 temp = temp->next;   // ubah alamat pointer temp ke temp berikutnya
}

c) Insert Node at Last position



Untuk memasukan node baru pada posisi terakhir, langkah pertama yang harus anda buat adalam membuat node baru. Agar node baru tersebut dimasukan ke posisi terakhir, anda harus menelusuri suatu linked list dan berhenti tepat satu node sebelum node akhir (lihat gambar di atas). Lalu ubah temp->next = baru. Perubahan itu akan menyambung linked list dengan node yang baru. Jangan lupa pada pointer baru, ubah alamat nextnya menjadi NULL.

d) Insert Node at Certain Position


Untuk memasukan node baru pada posisi tertentu, hampir mirip dengan memasukan node pada posisi terakhir. Ketika seorang user ingin memasukan ke posisi tertentu, contoh setelah posisi ke-2 (seperti gambar di atas), maka pointer temp harus berhenti tepat satu node sebelum node ke-2, Lalu buat juga pointer temp2 yang menunjuk alamat setelah node temp. Pointer temp->next disambung ke pointer baru. Dan baru->next disambung ke temp2. Selamat mencoba ya, semoga sukses :)

1 komentar: