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;
}
{
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.
*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“);
}"
{
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";
}
{
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
}
{
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.