Pointer Struktur Data
Pengantar Pointer Pemakaian array tidak selalu tepat untuk program- program terapan yang kebutuhan pengingatnya selalu bertambah selama eksekusi program tersebut. Untuk itu perlu adanya suatu tipe data yang bisa dialokasikan dan didealokasikan sesuai kebutuhan, yaitu Pointer.
Deklarasi Pointer Tipe pointer dideklarasikan pada bagian deklarasi type Bentuk umum deklarasi pointer adalah : Type pengenal = ^simpul; simpul = tipe; (pengenal : nama pengenal yang menyatakan data bertipe pointer; simpul : nama simpul; tipe : tipe data dari simpul)
Deklarasi Pointer Tanda ^ di depan nama simpul harus ditulis seperti apa adanya dan menunjukkan bahwa pengenal adalah suatu tipe data pointer. Tipe data simpul yang dinyatakan dalam tipe bisa berupa sembarang tipe data, misalnya char, integer, atau real. Contoh : Type Bulat : ^angka angka : integer; Dalam contoh diatas Bulat menunjukkan tipe data baru, yaitu bertipe pointer. Dalam hal ini pointer tersebut akan menunjukkan ke suatu data yang bertipe integer. Misalnya : var X, K : Bulat ;
Implementasi Pointer pada Record Pada program-program terapan, biasanya terdapat sekumpulan data yang dikumpulkan dalam sebuah rekaman (record), maka akan banyak dijumpai tipe data pointer yang elemennya (data yang ditunjukkan) adalah sebuah rekaman Contoh : type teks = string[30]; point = ^data; data = record nama_peg : teks; alamat : teks; pekerjaan : teks; berikut : point end; var P1, P2 : point; A,B,C : Teks; Simpul yang berisi medan bertipe pointer dapat digambarkan sbb: P1 P2
Implementasi Pointer pada Record Pada contoh di slide sebelumnya, P1 dan P2 adalah pointer yang akan menempati lokasi tertentu dalam pengingat. Kedua perubah ini masing-masing belum menunjuk ke suatu simpul nilai, dinyatakan sebagai nil. Untuk mengalokasikan simpul dalam pengingat, statemen yag digunakan adalah statemen new. Bentuk Umum : new(P1); new(P2);
Operasi pada Pointer Secara umum ada dua operasi pada pointer dasar : Mengkopi pointer, sehinggga sebuah simpul akan ditunjuk oleh lebih dari sebuah pointer. Mengkopi isi simpul, sehingga dua atau lebih simpul yang ditunjuk oleh pointer yang berbeda mempunyai isi yang sama. Syarat-syarat operasi pointer adalah kedua pointer yang dioperasikan harus mempunai deklarasi yang sama.
Contoh Type Mahasiswa = ^Data; Data = record nama : string; alamat : string; berikut : Mahasiswa end; Var T1, T2 : Mahasiswa; Pada deklarasi di atas, pointer T1 dan T2 mempunyai deklarasi simpul yang sama, sehingga memenuhi syarat untuk operasi pointer. Sekarang kita berikan statement : New (T1); New (T2); Artinya kita mempunyai dua simpul, yaitu : T1 T2
Lanjutan… Dengan menggunakan statement : T1^ .Nama := ‘OKKY’; T1^.Alamat := ‘KUPANG’; Maka simpul tersebut menjadi : Jika kita berikan statemen : T2 := T1; Maka simpulnya menjadi : T1 OKKY KUPANG T2 ? T1 OKKY KUPANG T2 ? ?
Lanjutan… Jika statemen yang kita berikan adalah : T2^ := T1^; Maka simpul tersebut akan menjadi : T1 OKKY KUPANG T2 OKKY KUPANG
End… Demikian penjelasan tentang perubah dinamis yang lebih dikenal dengan sebutan pointer. Pada materi- materi selanjutnya kita akan banyak memakai pointer untuk menyajikan struktur-stuktur data yang akan kita pelajari seperti : tumpukan, antrian, dan pohon biner.