LINKED LIST
Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian. Linked adalah koleksi obyek heterogen dengan sifat setiap obyek (kecuali obyek terakhir) mempunyai penerus dan setiap obyek (kecuali obyek pertama) mempunyai pendahulu. Salah satu penggunaan pointer adalah untuk membuat linked list atau senarai berantai. Linked list sendiri dapat diartikan sebagai sekumpulan komponen yang saling berhubungan (berantai) dengan bantuan pointer.
PEMBUATAN SINGLE LINKED LIST
Deklarasi node
Dibuat dari struct berikut ini:
struc node{
int data;
node *next;
};
Penjelasan:
- Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode
- Setelah pembuatan struct, buat variabel haed yang bertipe pointer dari TNode yang berguna sebagai kepala linked list.
Pembentukan node baru
Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi
memorinya, kemudian node tersebut diisi data dan pointer nextnya ditunjuk ke NULL
node *baru;
baru = new node;
baru->data =databaru;
baru->next =NULL;
SINGLE LINKED LIST MENGGUNAKAN HEAD
- Dibutuhkan satu buah variabel pointer: head
- Head akan selalu menunjuk pada node pertama
Deklarasi Pointer Penunjuk Kepala Single Linked List Manipulasi linked list tidak bisa
dilakukan langsung ke node yang dituju, melainkan harus menggunakan suatu pointer
penunjuk ke node pertama dalam linked list (dalam hal ini adalah head). Deklarasinya
sebagai berikut:
TNode *head;
Fungsi inisialisasi single Linked List
void int (){
head = NULL;
}
Function untuk mengetahui kosong tidaknya Single LinkedList Jika pointer head tidak
menunjuk pada suatu node maka kosong
PENAMBAHAN DATA
Penambahan data di depan
Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara head ditunjukkan ke node baru tersebut. Pada prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.
Penambahan data di depan
Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara head ditunjukkan ke node baru tersebut. Pada prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.
void insertDepan(int databaru){
node *baru;
baru =new node;
baru->data = databaru;
baru ->next =NULL;
if((isEmpty()==1){
haead=baru;
head->next = NULL;
}
else{
baru->next =head;
head = baru;
}
cout<<"data masuk\n";
}
MENAMPILKAN DATA
Function untuk menampilkan isi single linked list (non circular)
Function untuk menampilkan isi single linked list (non circular)
void tampil(){
node *bantu;
bantu = head;
if((isEmpty()==0){
while(bantu!=NULL){
cout<<bantu->data<<" ";
bantu=bantu->next;
}
cout<<endl;
}else cout<<"masih kosong\n";
}
- Function di atas digunakan untuk menampilkan
semua isi list, di mana linked list ditelusuri satu-persatu dari awal node
sampai akhir node. Penelusuran ini dilakukan dengan menggunakan suatu pointer
bantu, karena pada prinsipnya pointer head yang menjadi tanda awal list tidak
boleh berubah/berganti posisi.
- Penelusuran dilakukan terus sampai node terakhir ditemukan menunjuk ke nilai NULL. Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan menggunakan field next sehingga dapat saling berkait.
- Jika head masih NULL berarti data masih kosong!
- Penelusuran dilakukan terus sampai node terakhir ditemukan menunjuk ke nilai NULL. Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan menggunakan field next sehingga dapat saling berkait.
- Jika head masih NULL berarti data masih kosong!
PENGHAPUSAN DATA
Function untuk menghapus data terdepan
Function untuk menghapus data terdepan
void hapusDepan (){
node *hapus;
int d;
if ((isEmpty()==0){
if((head->next NULL){
hapus = head;
d = hapus->next;
delete=hapus;
}else{
d= head->data;
head = NULL;
}
cout<<d<<" terhapus\n";
}else cout<<"masih kosong\n";
}
Function di atas akan menghapus
data teratas (pertama) yang ditunjuk oleh head pada
linked list
- Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh
pointer, maka harus dilakukan penggunakan suatu pointer lain yang digunakan
untuk menunjuk node yang akan dihapus, misalnya pointer hapus dan barulah
kemudian menghapus pointer hapus dengan menggunakan perintah delete.
- Sebelum data terdepan dihapus, head harus ditunjukkan ke node sesudahnya
terlebih dahulu agar list tidak putus, sehingga node setelah head lama akan
menjadi head baru (data terdepan yang baru).
- Jika head masih NULL maka berarti data masih kosong!
linked list
- Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh
pointer, maka harus dilakukan penggunakan suatu pointer lain yang digunakan
untuk menunjuk node yang akan dihapus, misalnya pointer hapus dan barulah
kemudian menghapus pointer hapus dengan menggunakan perintah delete.
- Sebelum data terdepan dihapus, head harus ditunjukkan ke node sesudahnya
terlebih dahulu agar list tidak putus, sehingga node setelah head lama akan
menjadi head baru (data terdepan yang baru).
- Jika head masih NULL maka berarti data masih kosong!
Program 6.1 untuk Borlan
Lanjutan
Program 6.1 untuk eclips
Output program 6.1 untuk eclips
Perbedaan antara program untuk borlan dan eclips
Jika diBorlan library seperti :
#include <iostream>
#include <list>
#include<malloc>
#include<conio>
memakai ( .h ) serta menggunakan #include <conio.h>,karena untuk menampilkan getche();
jika di eclips tudak memakai (.h),dan tidak memakai #include<conio.h>,melainkan memakai using namespace std;
Program 6.2 untuk borlan
lanjutan
lanjutan
Output Program 6.2 untuk Borlan
Program 6.2 untuk eclips
lanjutan
lanjutan
lanjutan
Output Program 6.2 untuk eclips
Perbedaan Program 6.2 untuk borlan dan eclips
Jika diBorlan library seperti :
#include <iostream>
#include <list>
#include<malloc>
#include<conio>
ditambah dengan #include <stdlib.h>
di eclips juga sama hanya saja tidak memakai #include <conio.h> pada eclips.
Program 6.3 untuk borlan
lanjutan
lanjutan
Program 6.3 untuk eclips
lanjutan
lanjutan
Output Program 6.3 untuk eclips
Perbedaan Program 6.3 untuk borlan dan eclips
Jika diBorlan library seperti :
#include <iostream>
#include <list>
#include<malloc>
#include<conio>
ditambah dengan #include <stdlib.h>
di eclips juga sama hanya saja tidak memakai #include <conio.h> pada eclips.
Tidak ada komentar:
Posting Komentar