Anda di halaman 1dari 22

POINTER DAN LINKED LIST

Struktur Data & Algoritma Dewi Y L, M.Kom

Tipe Data Pointer


Tipe data Array:
statis, ukuran tetap ruang memori yg digunakan tidak dapat dihapus jika array sudah tidak dipakai lagi

Tipe data Pointer:


dinamis variabel dialokasikan pada saat dibutuhkan jika tidak dipakai bisa didealokasi

Array vs Pointer
Kriteria
Sifat Ukuran Alokasi variabel

Pointer Statis Dinamis Pasti Sesuai kebutuhan Saat program Dapat diatur dijalankan sesuai kebutuhan sampai selesai

Array

Deklarasi Variabel Pointer


Bentuk umum: var <NamaVar> : <^TipeData> Contoh
Var JumlahData : ^integer; NamaSiswa : ^string[25]; NilaiSiswa : ^real;

- Simbol ^ menandakan bahwa variabel tersebut menunjuk ke lokasi tertentu pada memori

Record bertipe Pointer


Bentuk Umum Type <NamaPointer> = <^NamaRecord>; <NamaRecord> = Record <item1> : <TipeData1>; <itemN> : <TipeDataN>; End; Var <NamaVar> : <NamaPointer>;

Contoh Pointer Record


Type
PointMhs = ^RecMhs; RecMhs = Record Nama : string[25]; NIM : string[10]; Alm : string[30]; IPK : IPK ; End; Var

DataMahasiswa : PointMhs;

Variabel Biasa vs Variabel Pointer


Variabel pointer menunjuk ke alamat memori yg digunakan untuk menampung data, sedangkan variabel biasa menunjuk ke data Contoh variabel biasa : var FirstName, LastName : String; Begin [1] FirstName := Dewi; [1] FirstName = Dewi LastName := Yanti; LastName = Yanti [2] FirstName := LastName; [2] FirstName = Yanti [3] LastName := Dewi; [3] LastName = Dewi writeln(FirstName); Yanti writeln(LastName); Dewi End.

Contoh Variabel Pointer


var FirstName, LastName : ^String; Begin [1] FirstName^ := Dewi; LastName ^ := Yanti; [2] FirstName ^:= LastName^; [3] LastName ^ := Dewi; writeln(FirstName^); writeln(LastName^); End.

[1] FirstName = Dewi LastName = Yanti [2] FirstName = Dewi [3] LastName = Dewi Dewi Dewi

Single Linked List


Satu variabel pointer yang digunakan untuk menyimpan banyak data.
Memori
0100 0200 0300 FFFF

Saya Mahasiswa
Statistika

NIL
NODE

Single Linked List: LIFO (Last In First Out) : Stack FIFO (First In First Out) : Queue

Pembuatan Node
Type Point = ^RecPoint; RecPoint = Record isi : TipeData; next : Point; End; Var Head, Now : Point;

LIFO (Last In First Out)


Metode Linked List dimana data yang masuk paling akhir akan keluar paling awal. Analoginya adalah tumpukan barang. Penambahan LL pada metode LIFO berarti menambahkan node (INSERT) di belakang

Procedure Insert
Procedure INSERT(elemen:TipeData); Var Now : Point; Begin New(Now); Now^.isi = elemen; if Head = NIL then Now^.next := NIL; else Now^.next := Head; end if; Head := Now; End;

Head := NIL; {Head mula2 selalu dideklarasikan NIL}


Head

NIL

New(Now); Now^.isi := 35;


Now

35

isi

next

Head = NIL then Now^.Next := NIL; Head := Now;


Now Head

35 next

NIL

New(Now); Now^.isi := 5;
Now

Head <> NIL then Now^.next := Head; Head := Now;


Now Head

5 isi next

5 next

35

NIL

New(Now); Now^.isi := 9; Head <> NIL then Now^.next := Head; Head := Now;
Now Head

9 next

35

NIL

First In First Out


Metode LL dimana data yg masuk paling awal adalah data yang keluar paling awal Analoginya sekelompok orang yang mengantri di loket pembelian tiket Jika LL dibuat dengan metode FIFO maka penambahan node (INSERT) di depan

Pembuatan Node
Type Point = ^RecPoint; RecPoint = Record isi : TipeData; next : Point; End; Var Head, Tail, Now : Point;

Procedure Insert
Procedure INSERT(elemen:TipeData); Var Now : Point; Begin New(Now); if Head = NIL then Head := Now; else Tail^.next := Now; end if; Tail := Now; Tail^.next := NIL; Now^.isi := elemen; End;

Head := NIL; {Head mula2 selalu dideklarasikan NIL}


Head NIL

New(Now); Head= NIL then; Head := Now; Tail := Now;


Now Head Tail

Tail^.next := NIL; Now^.isi := 35;


Now Head Tail

35 isi next

NIL

New(Now); Head <> NIL then Tail^.next := Now;


Now

Tail := Now; Tail^.Next := NIL; Now^.isi := 5;


Head Now Tail

Now Head Tail

35
35 isi NIL

5
isi next

NIL

next

insert(9)
Head Now Tail

35

NIL next

isi

insert(1)
Head Now Tail

35

1 isi next

NIL

Anda mungkin juga menyukai