POINTER
Untuk kelas 1 RPL pelajari tentang pointer ini
Kerjakan evaluasinya!
Pada pembahasan sebelumnya telah dijelaskan mengenai variable array, suatu tipe data yang sifatnya statis. Ruang memori yang digunakan tidak dapat dihapus bila variable bertipe array tersebut tidak digunakan lagi pada saat program dijalankan. Untuk memecahkan masalah tersebut kita dapat menggunakan variable pointer. Tipe data pointer bersifat dinamis, variable akan dialokasikan hanya pada saat dibutuhkan dan sesudah tidak dibutuhkan dapat didealokasikan kembali.
Deklarasi pointer
Bentuk umum
Type pengenal=^simpul;
simpul =tipe;
Senarai berantai
Apabila anda ingin menambah data, maka selalu dengan menggunakan variable pointer yang baru, anda akan membutuhkan banyak sekali variable pointer(penunjuk).
Oleh karena itu ada baiknya jika anda hanya menggunakan satu variable pointer saja untuk menyimpan banyak data dengan metode yang disebut linked list (senarai berantai).
Contoh 1:
Deklarasi dan procedure tambah di bawah ini digunakan untuk contoh 1 dan 2
type
penunjuk=^p;
p=record
nilai:integer;
berikut:penunjuk;
end;
var
baru, awal, akhir, bantu:penunjuk;
procedure tambah(nilaibaru:integer);
begin
new(baru);
baru^.nilai:=nilaibaru;
baru^.berikut:=nil;
end;
begin
awal:=nil;
tambah(5);
awal:=baru;
tambah(7);
akhir:=baru;
tambah(4);
bantu:=baru;
tambah(2);
tambah(3);
awal:=bantu;
baru^.berikut:=akhir;
bantu^.berikut:=akhir;
tambah(8);
baru^.berikut:=awal;
tambah(10);
akhir^.berikut:=baru;
tambah(6);
baru^.berikut:=awal;
awal:=baru;
tambah(5);
baru^.berikut:=akhir;
bantu^.berikut:=baru;
while(awal<>nil) do
begin
writeln(awal^.nilai);
awal:=awal^.berikut;
end;
end.
Output :
6
4
5
7
10