Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Daftar Berantai dan Struktur Data Dinamis
1. ƒ STRUKTUR DATA DINAMIS DAN PENGENALAN DAFTAR BERANTAI
Salah satu bentuk struktur data dinamis yang sederhana yaitu
daftar berantai (link list). Daftar berantai pada contoh ini
berisi sejumlah simpul yang bertipe record terdiri dari 3
buah field, yaitu nama,nilai,lanjutan. Field lanjutan sendiri
berupa variabel pointer. Variabel pointer lanjutan berfungsi
sebagai pengait atau penghubung dengan simpul berikutnya, se-
hingga membentuk suatu untai yang dinamakan daftar berantai.
Ciri daftar berantai, terdapat pointer yang berfungsi sebagai
head (kepala) dari rantai yang menunjuk simpul n. Ciri yang
lain, yaitu adanya pointer yang tidak menunjuk ke simpul yang
lain ( variabel pointer lanjutan pada simpul 1).
ÚÄÄÄÄÄ¿
alamat-n ÀÄÄÄÄÄÙÄÄÄ¿
Head ³
ÚÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
alamat -n ÀÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÙÄÄÄ¿ simpul n
nama nilai lanjutan ³
³
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
alamat -n ÀÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÙÄÄÄ¿ simpul 2
nama nilai lanjutan ³
³
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
alamat -n ÀÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÙ nil simpul 1
nama nilai lanjutan
ƒ MENCIPTAKAN VARIABEL DINAMIS
Dalam Pascal, tersedia prosedur bernama NEW yang digunakan
untuk menciptakan variabel dinamis. Bentuk prosedur :
NEW(varibel_pointer);
sebagai contoh : NEW(PtrBaru);
Pernyataan ini menyebabkan suatu alamat memori dari varibel
dinamis bertipe DataRecord disimpan dalam variabel PtrBaru.
sebelum NEW(PtrBaru);
PtrBaru
2. ÚÄÄÄÄÄ¿
ÀÄÄÄÄÄÙ
?
sesudah NEW(PtrBaru);
PtrBaru varibel dinamis
ÚÄÄÄÄÄ¿ ÚÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÀÄÄÄÄÄÙÄÄÄÄÄ>ÀÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nama nilai lanjutan
? ? ?
Setelah varibel dinamis terbentuk, pengisian dapat dilakukan
terhadap variabel dinamis. Contoh :
PtrBaru^.Nama := 'Debby';
PtrBaru^.Nilai:= 80;
Contoh : Beberapa Prosedur yang digunakan.
{**************************}
{Procedure bentuk link list}
{**************************}
Uses Crt;
Type PtrData = ^RecordData;
RecordData = Record
Nama:string[25];
Nilai:byte;
Lanjutan:PtrData;
End;
Var
PtrAwalHeap : Pointer;
PtrKepala : PtrData;
Procedure BentukDaftar(Var PtrKepala:PtrData);
Var
PtrBaru:PtrData;
ch:char;
Begin
Repeat
Clrscr;
New(PtrBaru);
write('Nama : ');readln(PtrBaru^.Nama);
write('Nilai: ');readln(PtrBaru^.Nilai);
PtrBaru^.Lanjutan := PtrKepala;
PtrKepala:=PtrBaru;
write('Input data lagi [Y/T] : ')
ch:=Upcase(readkey);
Until (ch='T');
End;
{*****************************************}
3. {Procedure Menampilkan isi Daftar Berantai}
{*****************************************}
Procedure Cetak_Isi_List;
Var
PtrSementara : PtrData;
Begin
clrscr;
PtrSementara:=PtrKepala;
While PtrSementara <> nil do
With PtrSementara^ do
begin
writeln(Nama:25,' ',Nilai:3);
PtrSementara:=Lanjutan;
end;
End;