>> POINTER <<
Variabel Pointer
Pada materi sebelumnya telah dijelaskan mengenai variabel bertipe array, suatu tipe data yang bersifat statis (ukuran dan urutannya sudah pasti). Selain itu ruang memori yang dipakai olehnya tidak dapat dihapus bila variabel bertipe array tersebut sudah tidak digunakan lagi pada saat program dijalankan. Untuk memecahkan masalah diatas, kita dapat menggunakan variabel pointer. Tipe data pointer bersifat dinamis, variabel akan dialokasikan hanya pada saat dibutuhkan dan sesudah tidak dibutuhkan dapat dialokasikan kembali.
Array vs Pointer
Berikut tabel di bawah ini diberikan perbedaan antara variabel bertipe array dengan varibel bertipe pointer.
Deklarasi Variabel Pointer
Bentuk umum :
Var
Contoh :
Var
Jumlahdata : ^integer;
Namasiswa :^string[25];
Nilaisiswa :^real;
Pendeklarasian variabel pointer tidak jauh berbeda dengan pendeklarasian variabel biasa, hanya perlu ditambahan simbol topi (^) sebelum tipe datanya. Simbol topi tersebut menandahkan bahwa variabel tersebut menunjuk ke lokasi tertentu pada memori.
Anda juga dapat membuat variabel pointer bertipe record yang anda definisikan sendiri. Pendeklarasiannya adalah seperti berikut ini.
Bentuk umum :
Tipe
ord>;
…
end;
Var
contoh :
Type
PointMhs = ^RecMhs;
RecMhs = record
Nama : string[25];
NIM : string[10];
Alm : string[30];
IPK : real;
End;
var
datamahasiswa : pointMhs;
Varibel Biasa vs Variabel Pointer
Variabel Pointer adalah suatu variabel yang menunjuk ke alamat memori yang digunakan untuk menampung data yang akan diproses, seperti digambarkan dibawah ini:
Untuk membedakan antara variabel pointer
dengan variabel biasa, perhatikan contoh berikut :
P adalah variabel pointer yang menunjuk ke alamat memori 100 yang berisi data bertipe string “Aku”. Apabila anda ingin menambah data dengan menggunakan variabel yang berbeda, maka anda dapat mendeklarasikan variabel pointer baru misalnya Q dan R dst sehingga tampak sbb :
Untuk membedak an antara variabel pointer dengan variabel biasa, perhatikan contoh berikut :
Single Linked List
Apabila setiap kali anda ingin menambahkan data selalu dengan menggunakan variabel pointer yang baru, anda akan membutuhkan banyak sek
ali variabel pointer(penunjuk).
Oleh karena itu ada baiknya jika anda hanya menggunakan satu variabel pointer saja untuk menyimpan banyak data den
gan metode yang kita sebut Linked List. Jika diterjemahkan, maka berarti suatu daftar isi yang saling berhubungan. Untuk lebih jelasnya perhatikan gambar di bawah ini :
Pada gambar diatas tampak bahwa
sebuah data terletak pada sebuah lokasi memory area. Tempat yang disediakan pada suatu area memory tertentu untuk menyimpan data dikenal dengan sebutan node/simpul. Pada setiap node memiliki pointer(penunjuk) yang menunjuk ke simpul berikutnya sehingga terbentuk suatu
untaian dan dengan demikian hanya diperlukan sebuah variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked List. (ket: Nill tak memiliki nilai apapun. Biasanya linked list pada titik akhirnya akan menunjuk ke Nill).
Dalam pembuatan single linked list dapat menggunakan 2 metode :
v LIFO (Last In First Out), aplikasi :Stack(Tumpukan).
v FIFO (First In First Out), aplikasi : Queue(Antrian).
LIFO (Last In First Out)
LIFO adalah suatu metode
pembuatan linked list, dimana data yang masuk paling akhir adalah data yang keluar paling awal. Hal ini dapat dianalogik
an (dalam kehidupan sehari-hari) pada saat anda menumpuk barang, seperti
digambarkan di bawah ini :
Pembuatan sebuah simpul dalam suatu linked list sepertidigambarkan diatas disebut dengan istilah INSERT. Jika linked list dibuat dengan metode LIFO, maka terjadi penambahan/insert simpul di belakang.
Penggalan deklarasi tipe data dan variabel di atas ini akan dipakai pada penjelasan procedure-procedure selanjutnya.
PROSEDURE INSERT
Istilah insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list. Berikut di bawah ini adalah penggalan listing prosecure insert untuk LIFO berserta contoh dan penjelasan cara kerjanya.
Penggalan deklarasi tipe data dan variabel di atas ini akan dipakai pada penjelasan procedure-procedure selanjutnya.
0 komentar:
Posting Komentar
please coment donk...!!!