Selasa, 12 April 2016

Tugas Struktur Data tentang ilustrasi Node

09.35

1.Ilustrasi penambahan Node di Depan


void insertDepan(int databaru)
{
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1)
{
head=baru;
head->next = NULL;
}
else
{
baru->next = head;
head = baru;
}

printf(”Data masuk\n”);
}







Penjelasannya :
•Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara: node head ditunjukkan ke node baru tersebut.

•Prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.

2.Ilustrasi Penambahan Node di Tengah


void insertTengah(int value, int cari) //penambahan data di tengah

{

TNode *baru, *bantu, *bantu2;

baru = new TNode; // pembentukan node baru

baru->data = value; // pemberian nilai terhadap data baru

baru->next = NULL; // data pertama harus menunjuk ke NULL

baru->prev = NULL; // data pertama harus menunjuk ke NULL

bantu = head; // bantu diletakan di head dulu

while(bantu->data != cari)

{

bantu = bantu->next; //menggeser hingga didapat data cari

}

bantu2 = bantu->next; // menghubungkan ke node setelah yang dicari

baru->next = bantu2; // menghubungkan node baru

bantu2->prev = baru;

bantu->next = baru; // menghubungkan ke node sebelum yang dicari

baru->prev = bantu;

}


Perlu diperhatikan :
*Dibutuhkan satu pointer untuk membantu mencari node di mana data yang ingin disisipkan ditempatkan. Dalam code di atas digunakan pointer bantu.
*Penggunaan pointer bantu2 pada code di atas sebenarnya bisa digantikan dengan pemanfaatan pointer bantu. Bagaimana caranya?
*Baca code beserta panduan proses yang terjadi, pahami, lalu gambarkan ilustrasi proses terjadinya penambahan di tengah. Misalkan saja data pada Linked List ada 4, lalu sisipkan data baru setelah node kedua.
*Setelah memahami penggunaan fungsi ini, bukalah Turbo C++ Anda, dan copy-kan fungsi ini.


3.Ilustrasi Penambahan Node di Belakang


void insertBelakang (int databaru)

{

TNode *baru,*bantu;

baru = new TNode;

baru->data = databaru;

baru->next = NULL;

if(isEmpty()==1) {

head=baru;

head->next = NULL;

}

else {

bantu=head;

while(bantu->next!=NULL){

bantu=bantu->next;

}

bantu->next = baru;

}

printf("Data masuk\n“);

}"







Penjelasannya :

•Penambahan data dilakukan di belakang, namun pada saat pertama kali, node langsung ditunjuk oleh head.

•Penambahan di belakang membutuhkan pointer bantu untuk mengetahui node terbelakang. Kemudian, dikaitkan dengan node baru.

•Untuk mengetahui data terbelakang perlu digunakan perulangan.


4.Ilustrasi Penghapusan Node di Depan


void hapusDepan ()

{

TNode *hapus;

int d;

if (isEmpty()==0){

if(head->next != NULL){

hapus = head;

d = hapus->data;

head = head->next;

delete hapus;

} else {

d = head->data;

head = NULL;

}

printf(“%d terhapus\n“,d);

} else cout<<"Masih kosong\n";

}






Penjelasannya :

•Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus ilakukan penggunakan suatu pointer lain (hapus) yang digunakan untuk menunjuk node yang akan dihapus, barulah kemudian menghapus pointer hapus dengan menggunakan perintah delete.

•Sebelum data terdepan dihapus, terlebih dahulu head harus menunjuk ke node berikutnya agar list tidak putus, sehingga node setelah head lama akan menjadi head baru

•Jika head masih NULL maka berarti data masih kosong!


5.Ilustrasi Penghapusan Node di Tengah



void deleteTengah(int cari) // penghapusan data di tengah

{

TNode *hapus, *bantu, *bantu2;

hapus = head; // letakan hapus pada head

while(hapus->data != cari)

{

hapus = hapus->next; // menggeser hingga data cari

}

bantu2 = hapus->next; // mengkaitkan node sebelum dan sesudahnya

bantu = hapus->prev;

bantu->next = bantu2;

bantu2->prev = bantu;


printf("data terhapus\n");


delete hapus; //proses delete tidak boleh dilakukan jika node sedang ditunjuk oleh pointer

}

Perlu diperhatikan :
*Dibutuhkan satu pointer untuk membantu mencari node di mana data yang ingin dihapus ditempatkan. Dalam code di atas digunakan pointer hapus.
*Penggunaan pointer bantu dan bantu2 pada code di atas sebenarnya bisa digantikan dengan pemanfaatan pointer hapus. Bagaimana caranya?
*Baca code beserta panduan proses yang terjadi, pahami, lalu gambarkan ilustrasi proses terjadinya penghapusan di tengah. Misalkan saja data pada Linked List ada 4, lalu hapus data pada node ketiga.
*Setelah memahami penggunaan fungsi ini, bukalah Turbo C++ Anda, dan copy-kan fungsi ini.



6.Ilustrasi Penghapusan Node di Belakang







void hapusBelakang(){

TNode *hapus,*bantu;

int d;

if (isEmpty()==0){

if(head->next != NULL){

bantu = head;

while(bantu->next->next!=NULL){

bantu = bantu->next;

}

hapus = bantu->next;

d = hapus->data;

bantu->next = NULL;

delete hapus;

} else {

d = head->data;

head = NULL;

}

printf(“%d terhapus\n“,d);

} else printf(“Masih kosong\n“);

}





Penjelasannya : •Membutuhkan pointer bantu dan hapus. Pointer hapus digunakan untuk menunjuk node yang akan dihapus, pointer bantu untuk menunjuk node sebelum node yang dihapus yang akan menjadi node terakhir. •Pointer bantu digunakan untuk menunjuk ke nilai NULL. Pointer bantu selalu bergerak sampai sebelum node yang akan dihapus, kemudian pointer hapus diletakkan setelah pointer bantu. Selanjutnya pointer hapus akan dihapus, pointer bantu akan menunjuk ke NULL.


Written by

We are Creative Blogger Theme Wavers which provides user friendly, effective and easy to use themes. Each support has free and providing HD support screen casting.

0 komentar:

Posting Komentar

 

© 2013 Rosalio Cahyo Romadhon. All rights resevered. Designed by Templateism

Back To Top