presentatio
n
Company name
Definisi
Linked List adalah salah satu bentuk struktur data, berisi
kumpulan data (disebut node atau simpul) biasanyadalam bentuk
struct, yang tersusun secara sekuensial dan saling menyambung.
Linked List sering disebut juga Senarai Berantai.
Linked List diimplementasikan menggunakan variabel pointer.
Struct
Deklarasi
Penjelasan:
Pembuatan struct bernama Tnode yang berisi 2field, yaitu field data bertipe
integer dan field next yang bertipe pointer dari TNode
Setelah pembuatan struct, buat variabel head yang bertipe pointer yang
berguna sebagai kepala linked list.
pada
suatu
Pada saat pertama kali (saat data masih kosong), maka penambahan data dilakukan dengan
cara node head ditunjukkan ke node baru tersebut. Untuk menambah data selanjutnya dengan
cara menambah node baru yang akan dikaitkan di node paling depan
Prinsip mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data
baru tersebut sehingga head tetap menjadi data terdepan
Contoh Program
void insertdepan(int n) { //Fungsi untuk menambahkan data baru (n didapat dari input di
program utama (main))
TNode *baru; //Disini menggunakan baru sebagai pointer TNode nya
baru=new TNode;
baru->data=n; //pointer baru->data berisi nilai variabel n
baru->next=NULL; // pointer baru->next berisi NULL
if(IsEmpty()==1){ //periksa apakah linked list bernilai, jika return 1(tidak bernilai), maka
akan
mengeksekusi perintah hingga }
head=baru; //Nilai head= Nilai baru
head->next=NULL;
} else {
// Jika return 0(linked list bernilai), maka akan mengeksekusi perintah
berikut hingga }
baru->next=head;
head=baru;
} cout<<"Data Terisi";
Menampilkan seluruh
isi list
Menampilkan seluruh isi list dengan
cara menelusuri linked list satupersatu
dari
awal
sampai
akhir
node
menggunakan pointer bantu.
Catatan pointer head yang
menjadi tanda awal linked list tidak
bolehberubah atau berganti posisi.
Penelusuran dilakukan terus sampai
dengan node terakhir menunjuk kenilai
NULL. Jika tidak NULL.
Contoh Program
void tampil() { //Fungsi untuk menampilkan linked list yang telah di input /
di delete
TNode *bantu; //p o inter yang digunakan yaitu bantu
bantu=head; // Nilai bantu= Nilai yang ada di head
if(IsEmpty()==0){ // periksa apakah return 0(bernilai)
while(bantu!=NULL){ //Selama bantu tidak sama dengan NULL, maka di
eksekusi
cout<<bantu->data<<endl; // tampilkan di monit o r nilai bantu->data
bantu=bantu->next; //Nilai bantu= nilai bantu selanjutnya
}} else
cout<<"Masih Kosong"<<endl;
}
Menghapus Node
Menghapus node/data pertama (terdepan) yang
ditunjuk oleh head pada linked list.
Menghapus node terdepan tidakboleh dilakukan
jika node sedang ditunjuk oleh pointer, sehingga
harus menggunakan pointer lain untuk menunjuk
node yang akan dihapus,
contoh pointer hapus, kemudian menghapus pointer
hapus menggunakan perintah delete.
Contoh
Function untuk menghapus data terdepan
void hapusdepan() { //Fungsi untuk menghapus Nilai paling
depan
TNode *hapus;
int d;
if(IsEmpty()==0){ //periksa apakah return 0(ada nilai)
if(head!=NULL){ // jika head tidak sama dengan Null maka :
hapus=head; // pointer hapus= head
d=hapus->data; //nilai dari d = nilai dari hapus->data
head=hapus->next; // Nilai head sekarang berisi nilai hapus>next
delete hapus; //fungsi untuk menghapus nilai yang ada di
pointer hapus
} cout<<d<<" Terhapus"<<endl;
} else
cout<<"Masih Kosong"<<endl;
ILUSTRASI
ILUSTRASI
Function untukmenghapusdata paling
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;
}
cout<<d<<" Terhapus"<<endl;
} else
cout<<"Masih Kosong"<<endl
ILUSTRASI
Setiap node pada linked list mempunyai field yang
berisi pointer ke node berikutnya, dan juga memiliki
field yang berisi data.
Pada akhir linked list, node terakhir akan menunjuk
ke node terdepan sehingga linked list tersebut
berputar.
ABCD
ILUSTRASI
Fungsi
Penambahan
belakang
void insertBelakang (int databaru){
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
if(isEmpty()==1){
head=baru;
head->next=head;
} else {
bantu = head;
while(bantu->next != head){
bantu=bantu->next;
}
bantu->next = baru;
baru->next = head;
}
cout<<Data terinput"<<endl;
data
di
Contoh Program
Function untuk menampilkan isi single linked list
void tampil(){
TNode *b;
b=head; // Nilai bantu= Nilai yang ada di head
if(IsEmpty()==0){ // periksa apakah return 0(bernilai)
do{
cout<<b->data<<endl; // tampilkan di monitor nilai bantu-data
b=b->next; //Nilai bantu= nilai bantu selanjutnya
}while(b!=head);
cout<<endl;
}
else
cout<<"Masih Kosong"<<endl;
}
Fungsi
untuk
belakang
void hapusBelakang(){
TNode *hapus,*bantu;
if (isEmpty()==0){
int d;
hapus = head;
if(head->next == head){
head = NULL;
}else{
bantu = head;
while(bantu->next->next != head){
bantu = bantu->next;
}
hapus = bantu->next;
d = bantu->data;
bantu->next = head;
delete hapus;
}
cout<<Data Terhapus"<<endl;
} else cout<<"Masih Kosong"<<endl;
hapus
di