Home

Get cash from your website. Sign up as affiliate

10 Juni 2009

LanJutan Linked List

MySpace

>> KONSTRUKTOR
pada saat suatu obyek diciptakan, konstruktor melakukan tindakan yaitu membuat pointer pertama bernilai NULL.Langkah ini untuk menyatakan bahwa belum ada node yang terbentuk (digunakan untuk membuat suatu list kosong). Definisi dari konstruktor Senarai :

senarai :: senarai()
{
pertama = NULL;
}


>> DESTRUKTOR
Pada saat daur hidup suatu obyek berakhir, destruktor berfungsi untuk menghapus seluruh node pada Linked List. Langkahny sbb :

senarai : : senarai()
{
//hapus seluruh node
node *node_dihapus;
while (pertama !=NULL)
{
node_dihapus = pertama;
pertama = pertama -> lanjutan;
delete node_dihapus;
}
}

Langkahnya adalah dengan menggeser pointer pertama ke setiap node. Untuk menggeser pointer yang menunjuk ke suatu node menuju ke node berikutnya, diperlukan perintah :

pertama = pertama ->lanjutan;

Pointer pertama diisi dengan nilai dari pointer lanjutan yang ditunjuk oleh pertama
perintahnya :

node_dihapus = pertama;

Digunakan untuk mengingat posisi yang ditunjuk pertama, sebelum italic;">pertama digeser menunjuk ke node berikutnya, kemudian :
lanjutan
delete node_dihapus
menyebabkabkan node dihapus!!!


>> MENAMBAH NODE
Mekanisme penambahan node :
1. Langkah awal
sebuah pointer baru ( menunjuk ke node baru ) mula - mula diciptakan terlebih
dahulu
2. Langkah penambahan
~ mengalokasikan node baru ke heap dan kemudian ditunjuk oleh pointer baru
~ data nama dan telepon diisikan ke node yang tercipta
~ pointer lanjutan pada node yang ditunjuk oleh baru diatur agar menunjuk ke node yang ditunjuk oleh pointer pertama
~ pointer pertama diatur agar menunjuk ke node yang ditunjuk oleh baru

definisi fungsi yang bertindak untuk menambah data adalah, sbb :

int senarai : : tambah(char *nama, char *telepon)
{
node "baru;
baru = new node;
if(baru)
{
baru ->lanjutan = pertama;
strcpy (baru ->nama, nama);
strcpy (baru ->telepon, telepon);
pertama = baru ; // sekarang pertama menunjuk baru
return (1);
}
else
return (0);
}

Fungsi di atas memberikan nilai balik sama dengan 1 kalau node baru berhasil diciptakan. Sekiranya pada saat hendak mencitakan node di heap ternyata memori habis, fungsi ini memberikan nilai balik berupa ()


>> MENGHAPUS NODE

Sebagai suatu struktur data yang dinamis, operasi penghapusan suatu node juga dapat dilaksanakan pada Linked List. OPerasi ini memungkinkan suatu memori yang ditempati data yang tidak terpakai lagi bisa digunakan oleh data yang lain di suatu saat nanti

Pada operasi penghapusan suatu node, ada 2 kondisi :
1. node yang akan dihapus merupakan node yang tidak memiliki pendahulu, yaitu node yang ditunjuk oleh pointer pertama
2. node yang akan dihapus memiliki node pendahulu ( bukan node yang ditunjuk oleh pertama )

int senarai :: hapus (char *nama )
{
node *posisi_data;
posisi_data = cari (nama);
if (posisi_data == NULL)
return (0); // data tak ada
else
(
if (pendahulu == NULL)
{
// node yang akan dihapus adalah node pertama
pertama = pertama ->lanjutan;
}
else
{
// bukan node pertama yang akan dihapus
pendahulu -> lanjutan = posisi_data -> lanjutan;
}
delete posisi_data;
}
return (1);
}

.. pada kondisi pertama, penghapusan dilakukan dengan mula - mula mengatur pointer pertama agar menunjuk node yang ditunjuk oleh pointer lanjutan milik node yang ditunjuk oleh pertama dengan perintah : pertama -> lanjutan;
kemudian node yang ditunjuk oleh posisi_data dihapus dengan delete

..pada kondisi kedua,mula” pointer lanjutan milik node yg ditunjuk oleh pointer pendahulu digeser akn menunjuk node yg ditunjuk oleh pointer lanjutan milik node yg ditunjuk oleh posisi_data.
Perintahnya :
pendahulu -> lanjutan = posisi_data -> lanjutan ;

kemudian diikuti dgn penghapusan node yg ditunjuk oleh posisi_data

Tidak ada komentar: