• Tidak ada hasil yang ditemukan

Array VS Linked List

N/A
N/A
Protected

Academic year: 2021

Membagikan "Array VS Linked List"

Copied!
24
0
0

Teks penuh

(1)

Linked List

Linked List adalah salah satu bentuk struktur

data, berisi kumpulan data (disebut node atau

simpul) biasanya dalam bentuk struct, yang

tersusun secara sekuensial dan saling

menyambung.

Linked List sering disebut juga Senarai Berantai.

Linked List diimplementasikan menggunakan

variabel pointer, sehingga cacah data yang

disimpan dapat bersifat dinamis.

(2)
(3)

Linked List

(Single Linked List Non-Circular - SLLNC)

Pengertian:

• Single: field pointer-nya hanya satu buah dan satu arah.

• Linked List: node-node tersebut saling terhubung satu sama lain. Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data.

• non Circular: pada akhir node maka pointernya menunjuk NULL, digunakan sebagai kondisi berhenti saat membaca isi linked list.

(4)

Single Linked List non-Circular – deklarasi (1/3)

Contoh deklarasi Node

typedef struct TNode{ int data;

TNode *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 head yang

bertipe pointer dari TNode yang berguna sebagai kepala linked list.

(5)

Single Linked List non-Circular – deklarasi (2/3)

Menggunakan keyword new untuk

menyiapkan sebuah node baru berserta

alokasi memorinya, kemudian node ini

diisi data dan pointer nextnya menunjuk

ke NULL.

TNode *baru;

baru = new TNode;

baru->data = databaru; baru->next = NULL;

(6)

Single Linked List non-Circular

(7)

SLLNC MENGGUNAKAN HEAD

inisialisasi (1/2)

Dibutuhkan sebuah variabel pointer yaitu head (kepala)

• Head selalu menunjuk pada node pertama

• Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, harus menggunakan suatu pointer

penunjuk ke node pertama dalam linked list (disini adalah head). Deklarasinya adalah: TNode *head;

(8)

SLLNC MENGGUNAKAN HEAD

inisialisasi (2/2)

Fungsi Inisialisasi Single LinkedList void init(){

head = NULL; }

Function untuk mengetahui kosong tidaknya Single LinkedList

Jika pointer head tidak menunjuk pada suatu node, maka data masih kosong

int isEmpty(){

if(head == NULL) return 1; else return 0;

(9)

SLLNC MENGGUNAKAN HEAD

menambah data di depan

Menambah data di depan

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 dikaitan di

node paling depan

Prinsip Æ mengkaitkan node baru dengan head,

kemudian head akan menunjuk pada data baru

tersebut sehingga head tetap menjadi data

(10)

SLLNC MENGGUNAKAN HEAD

(11)

SLLNC MENGGUNAKAN HEAD

menambah data di depan - contoh program

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”); }

(12)

SLLNC MENGGUNAKAN HEAD

menambah data di belakang

Menambah data di belakang

• Pada saat pertama kali (saat data masih kosong), maka penambahan data dilakukan dengan cara node head ditunjukkan ke node baru tersebut.

• Untuk menambah data berikutnya, menambah data di belakang lebih sulit karena butuh pointer bantu untuk mengetahui node paling belakang. Selanjutnya pointer bantu dikaitkan dengan node baru.

• Catatan Æ untuk mengetahui data paling belakang perlu digunakan proses perulangan.

(13)

SLLNC MENGGUNAKAN HEAD

(14)

SLLNC MENGGUNAKAN HEAD

(15)

SLLNC MENGGUNAKAN HEAD

menambah data di belakang - contoh program

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“); }

(16)

SLLNC MENGGUNAKAN HEAD

menampilkan seluruh isi list

• Menampilkan seluruh isi list dengan cara menelusuri linked list satu-persatu dari awal sampai akhir node menggunakan pointer bantu.

• Catatan Æ pointer head yang menjadi tanda awal linked list tidak boleh berubah atau berganti posisi.

• Penelusuran dilakukan terus sampai dengan node

terakhir menunjuk ke nilai NULL. Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan

membaca isi data menggunakan field next.

• Catatan Æ jika head masih NULL berarti data masih kosong.

(17)

SLLNC MENGGUNAKAN HEAD

menampilkan seluruh isi list - contoh program - ilustrasi

void tampil(){ TNode *bantu; bantu = head; if(isEmpty()==0){ while(bantu!=NULL){ cout<<bantu->data<<" "; bantu=bantu->next; } printf(“\n”);

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

(18)

SLLNC MENGGUNAKAN HEAD

menghapus data pertama (terdepan)

• Menghapus node/data pertama (terdepan) yang ditunjuk oleh head pada linked list.

• Menghapus node terdepan tidak boleh 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.

• Catatan Æ sebelum data terdepan dihapus, head harus menunjuk ke node sesudahnya agar list tidak putus. Head akan menunjuk ke node data terdepan yang baru.

(19)

SLLNC MENGGUNAKAN HEAD

menghapus data pertama (terdepan) - contoh program - ilustrasi

Function untuk menghapus data terdepan

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"; }

(20)

SLLNC MENGGUNAKAN HEAD

menghapus data terakhir (paling belakang)

• Membutuhkan 2 pointer tambahan yaitu: pointer bantu dan pointer hapus.

• Pointer hapus untuk menunjuk node yang akan dihapus.

• Pointer bantu untuk menunjuk node sebelum node yang dihapus yang kemudian menjadi node terakhir.

• Pointer bantu selalu bergerak sampai sebelum node yang akan dihapus, kemudian pointer hapus diletakkan setelah pointer bantu. Selanjutnya pointer hapus akan dihapus, sedangkan pointer bantu menunjuk ke NULL.

(21)

SLLNC MENGGUNAKAN HEAD

(22)

SLLNC MENGGUNAKAN HEAD

menghapus data terakhir (paling belakang) – contoh program

Function untuk menghapus data 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; } else { d = head->data; head = NULL; } printf(“%d terhapus\n“,d);

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

(23)

SLLNC MENGGUNAKAN HEAD

menghapus semua data (semua elemen linked list) – contoh program

Function untuk menghapus semua elemen Linked List

void clear(){ TNode *bantu,*hapus; bantu = head; while(bantu!=NULL){ hapus = bantu; bantu = bantu->next; delete hapus; } head = NULL; }

(24)

Sumber Referensi

James Roberge, Stefan Brandle, dan David

Whittington, 2003, C++ Data Structures 2nd

Edition, Jones and Bartlett Publishers, Inc.,

Sudbury, Massachusetts.

Antonius Rachmat Chrismanto – UKDW

Yogyakarta.

P. Insap Santosa, 1992, Struktur Data

Menggunakan Turbo Pascal 6.0, Penerbit

Andi, Yogyakarta.

Referensi

Dokumen terkait

Pengaruh Pemberian Ekstrak Umbi Gynura procumbens Terhadap Jumlah Koloni Kuman Pada Organ Limpa Mencit BALB/C yang Diinfeksi Oleh Salmonella typhimurium.. Disusun oleh:

Fungsi deletenode( ) akan menghapus node pada posisi curr jika linked list tidak kosong dan memindahkan pointer curr ke posisi node pertama, atau curr bernilai NULL apabila linked

Otitis media akut dapat dise#a#kan invasi virus Campak ke dalam telin$a ten$a!% Gendan$ telin$a #iasana !peremia pada fase prodormal dan stadium erupsi% 4ika terjadi invasi

Berikut ini merupakan notasi yang digunakan dalam model. Biaya total untuk sistem persediaan material Panjang periode review untuk modul i tipe j Panjang periode

secara ekonomi, realitik secara organisasional, terkoordinasi dengan aliran kerja organisasi, fleksibel, bersifat sebagai petunjuk dan operasional, dan diterima para

As this The Legend Of Zelda: Ocarina Of Time 3D: Prima Official Game Guide (Prima Official Game Guides) By John Chance will certainly be in this book, all books that you require

I had written Piedmont a letter saying that I only wanted to spend one more year teaching on the island. I did not elaborate the reasons for this in my letter to him. I felt the

Perilaku api yang dihasilkan dari proses pembakaran yang dilakukan pada area pengamatan di hutan Sekunder Haurbentes, Jasinga Jawa Barat sangat mempengaruhi kondisi fauna