Anda di halaman 1dari 23

STMIK STIKOM BALI

Struktur Data

Pointer & Linked List (Senarai Berantai)


POINTER

VARIABEL PENUNJUK ALAMAT MEMORI


Pointer

DATA STRUCTURES LECTURE NOTES


 Pointer adalah tipe data yang digunakan untuk
menyimpan ALAMAT MEMORI (bukan data!).
 Variable yang berisi alamat memori sebagai nilainya
dan berbeda dengan variabel biasa yang berisi nilai
tertentu.
 Dengan kata lain, pointer berisi alamat dari variabel
yang mempunyai nilai tertentu.
 Pengalokasian bersifat dinamik : dapat dibangun atau
dihapus selama program berjalan (runtime).
Operator Pointer

DATA STRUCTURES LECTURE NOTES


Operator Pointer ada dua, yaitu :
 Operator &
 Operator & bersifat unary (hanya memerlukan satu
operand saja).
 Operator & menghasilkan alamat dari operandnya.

 Operator *
 Operator * bersifat unary (hanya memerlukan satu
operand saja).
 Operator * menghasilkan nilai yang berada pada
sebuah alamat.
Bentuk Umum Pointer

DATA STRUCTURES LECTURE NOTES


 Adapun bentuk umum dari pernyataan variable pointer
dalam C++ adalah :
type *variable_name;
 Dengan :
 type adalah tipe dasar pointer.
 variable_name adalah nama variable pointer.
 * adalah operator memori yang fungsinya untuk
mengembalikan nilai variabel pada alamatnya yang
ditentukan oleh operand.
Contoh Program Pointer

DATA STRUCTURES LECTURE NOTES


 Contoh :
Int *int_pointer; // pointer to integer
Float *float_pointer; // pointer to float

 Contoh program dalam C++ :


//program pointer1
#include<iostream.h>
#include<conio.h>
void main()
{
int v = 7, *p;
p = &v;
cout<<"Nilai v = "<<v<<" dan *p = "<<*p<<endl;
cout<<"Alamatnya = "<<p;
getch();
}
Linked List

SENARAI BERKAIT
Linked List

DATA STRUCTURES LECTURE NOTES


 Salah satu bentuk struktur data fundamental.
 Dapat digunakan untuk membentuk struktur data yang lebih
kompleks.
 Serangkaian simpul/node yang berisi data dan saling
terkait.
 Memanfaatkan kombinasi dari tipe data pointer dan tipe
data record/structure (pointer to records).
 Setara dengan array of record, tetapi dengan kelebihan :
 Alokasi memori lebih fleksibel (dinamis), karena :
 Tidak perlu memindah-mindahkan data.
 Tidak perlu menempatkan data secara berurut dalam ruang
memori.
Linked List

DATA STRUCTURES LECTURE NOTES


 Prinsip linked list dapat kita bandingkan seperti suatu
rantai yang matanya dihubungkan satu sama lain. Mata
rantai tersebut dapat kita asosiasikan dengan record
atau node.
 Ciri khas suatu node dalam linked list adalah harus
selalu terdapat field, paling sedikit dua bagian, yaitu :
 Data
 Pointer.
 Secara umum linked list dibedakan atas 2 macam, yaitu :
 Single Linked List
 Double Linked List
DATA STRUCTURES LECTURE NOTES
Bentuk-bentuk linked list
Single-linked list

DATA STRUCTURES LECTURE NOTES


 Satu simpul/node memiliki sebuah variabel pointer yang
digunakan untuk menunjuk pada simpul/node berikutnya.
Double-linked list

DATA STRUCTURES LECTURE NOTES


 Satu simpul/node menyimpan dua variabel bertipe
pointer.
 Satu pointer menunjuk ke simpul/node berikutnya.
 Pointer yang lain menunjuk ke simpul/node sebelumnya.
 Varian : Multiple-Linked List
 Jumlah variabel pointer yang dimiliki masing-masing simpul
lebih dari dua.
Circular linked list

DATA STRUCTURES LECTURE NOTES


 Pointer pada simpul/node terakhir menunjuk pada
simpul/node pertama.
 Varian :
 Circular single linked list.
 Circular double linked list.
Headed linked list

DATA STRUCTURES LECTURE NOTES


 Simpul pertama tidak diisi dengan data, tetapi
diisi dengan informasi yang berhubungan dengan
metadata linked list
Operasi-operasi terhadap linked list

DATA STRUCTURES LECTURE NOTES


 Menambah Simpul/Node Baru
 Menambah di depan.
 Menambah di tengah.
 Menambah di belakang.
 Menghapus Simpul/Node
 Menghapus di depan.
 Menghapus di tengah.
 Menghapus di belakang.
 Membaca isi simpul/node.
 Membaca maju
 Membaca mundur
Menambah (simpul) di depan

DATA STRUCTURES LECTURE NOTES


baru
40 Ø
next

awal akhir
50 next 80 Ø

if (IB <= awal->info)


{
NB->next=awal;
awal=NB;
}
Menambah (simpul) di tengah

DATA STRUCTURES LECTURE NOTES


baru
70 Ø
next

awal akhir
50 next 60 49
next 80 Ø

bantu

if (IB >= awal->info)


{ bantu=awal;
while (bantu->next!=NULL && IB > bantu->next->info)
bantu=bantu->next;
NB->next=bantu->next;
bantu->next=NB;
if (IB>akhir->info)
akhir=NB;
}
Menambah (simpul) di belakang

DATA STRUCTURES LECTURE NOTES


baru
80 Ø

akhir
awal
50 next 60 49
next 70 Ø
next

bantu

if (IB >= awal->info)


{ bantu=awal;
while (bantu->next!=NULL && IB > bantu->next->info)
bantu=bantu->next;
NB->next=bantu->next;
bantu->next=NB;
if (IB>akhir->info)
akhir=NB;
}
Menghapus (simpul) di depan

DATA STRUCTURES LECTURE NOTES


hapus
2050

awal
50 next
20 60 next 80 Ø

if (awal->info==IH)
{ hapus=awal;
awal=hapus->next;
free(hapus); }
Menghapus (simpul) di tengah dan akhir

DATA STRUCTURES LECTURE NOTES


hapus hapus

2060 2080

awal
50 next
20 60 next 80 Ø

{ bantu=awal;
while (bantu->next->next!=NULL && IH!=bantu->next->info)
bantu=bantu->next;
if (IH==bantu->next->info)
{ hapus=bantu->next;
if (hapus==akhir) // Hapus di akhir
{ akhir=bantu;
akhir->next=NULL; }
else
bantu->next=hapus->next; // Hapus di tengah
free(hapus);
}
Membaca maju dan mundur
(linked list)

DATA STRUCTURES LECTURE NOTES


?

TUGAS
Script dan ilustrasi
Linked Lists vs Arrays

DATA STRUCTURES LECTURE NOTES


Arrays Linked Lists
Memperbolehkan melakukan Hanya memperbolehkan pengaksesan secara
pengaksesan secara random sekuensial terhadap elemen
Tidak memerlukan ruang Memerlukan ruang penyimpanan ekstra
penyimpanan ekstra untuk untuk reference (penyimpan alamat memori)
menyimpan alamat memori
Tidak bisa dirubah ukuran alokasi Ukuran alokasi memori dapat diubah sesuai
memorinya  dengan kebutuhan
DATA STRUCTURES LECTURE NOTES
Pertanyaan ?

Anda mungkin juga menyukai