Download - Pertemuan 3 ok
Pertemuan 3
RECORDMerupakan koleksi satuan data yang heterogen. Satuan data tersebut sering disebut sebagai field dari record.
Contoh penggunaan record dalam program PASCAL : Type Siswa = record
Nama : string[25]; Kelas : 1..6; Nilai : real;
end;
KONSEP POINTER DAN LINKED LIST
Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut dengan perubah dinamis (Dinamic variable)
Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.
Perbedaan Peubah Statis & Dinamis
Pada perubah statis, isi Memory pada lokasi tertentu (nilai perubah) adalah data sesungguhnya yang akan diolah. Pada perubah dinamis, nilai perubah adalah alamat lokasi lain yang menyimpan data sesungguhnya. Dengan demikian data yang sesungguhnya dapat dimasukkan secara langsung.
Dalam hal cara pemasukkan data dapat diilustrasikan seperti dibawah ini.
Tanda ^ di depan nama Simpul menunjukkan bahwa pengenal adalah suatu Type Data Pointer.
DEKLARASI POINTER DAN ALOKASI TEMPAT
Dalam bahasa pemrograman Pascal, Type Data Pointer dideklarasikan pada bagian Deklarasi Type.
Bentuk Umum Deklarasi Pointer :
Type Str30 = String[30];Point = ^Data;Data = Record; Nama_peg : Str30; Alamat : Str30; Pekerjaan : Str30;
End;
Type Data Simpul yang dinyatakan dalam Tipe dapat berupa sembarang Type Data, misalnya Char, Integer dan Real. Contoh :
Operasi Pada Pointer
Pertama kali yang harus dilakukan adalah mendeklarasikan Type Pointernya, yaitu :
Type Simpul = ^Data;Data = Record;
Nama : String;Alamat : String;Berikut : Simpul;
End;Var T1,T2 : Simpul;
MENGHAPUS POINTERPointer yang telah dialokasikan (dibentuk) dapat di dealokasikan (dihapus) kembali pada saat program dieksekusi. Setelah suatu Pointer dihapus, maka lokasi yang semula ditempati oleh simpul yang ditunjuk oleh Pointer tersebut akan bebas, sehingga dapat digunakan oleh perubah lain.Statemen untuk menghapus Pointer adalah :
Dispose (perubah)
Dengan perubah adalah sembarang perubah yang bertype Pointer. Contohnya adalah sebagai berikut :
Pada suatu saat, simpul yang ditunjuk oleh Pointer Murid1 tidak digunakan lagi, maka dapat dihapus dengan menggunakan statemen :
Dispose (Murid1);
LINKED LIST (LINKED LIST)
Salah satu Struktur Data Dinamis yang paling sederhana adalah Linked List atau Struktur Berkait atau Senarai Berantai, yaitu suatu kumpulan komponen yang disusun secara berurutan dengan bantuan Pointer.
Linked List (Senarai Berantai) disebut juga dengan Senarai Satu Arah (One-Way List). Masing-masing komponen dinamakan dengan Simpul (Node).
Setiap simpul dalam suatu Linked List terbagi menjadi dua bagian,yaitu :1. Medan Informasi
Berisi informasi yang akan disimpan dan diolah.2. Medan Penyambung (Link Field)
Berisi alamat berikutnya. Bernilai 0, Jika Link tersebut tidak menunjuk ke Data (Simpul) lainnya. Penunjuk ini disebut Penunjuk Nol.
Selain jenis struktur terkait yang telah disebutkan diatas ada beberapa jenis Struktur Berkait yang lain seperti Linked-Stack, Linked-Queue, Doubly Linked-List, Linked Centralize-List dan sebagainya.
MENAMBAH SIMPUL DI BELAKANG
AWAL = AKHIR = BARU
D
BARU
D
AWAL
A B C
AKHIR
MENAMBAH SIMPUL DI DEPAN
AWAL = BARU
A
BARU
A
AWAL AKHIR
B D C
MENAMBAH SIMPUL DI TENGAH
AWAL
A B D
AKHIR
BARU C
BANTU
E
MENGHAPUS SIMPUL PERTAMA
D
AWAL
B C A
AKHIR
HAPUS
MENGHAPUS SIMPUL TENGAH
D
AWAL
B C A
AKHIR
BANTU
HAPUS
MENGHAPUS SIMPUL AKHIR
D
AWAL
B C A
AKHIRBANTU
HAPUS
AWAL
B D C A
AKHIRBANTU
HAPUS
MEMBACA SIMPUL MAJU
D
AWAL
B C A
AKHIR
BANTU
A B C D
Procedure Balik_Pointer(Var Awal,Akhir : Simpul);Var Bantu,Bantu : Simpul;Begin
Bantu := Awal;Awal := Akhir;{* Proses membalik Pointer *}Repeat
Bantu_1:= Bantu;{* Mencari simpul sebelum simpul yang di tunjuk oleh
Pointer Akhir *}While Bantu_1^.Berikut<> Akhir Do
Bantu_1:= Bantu_1^.Berikut;Akhir ^.Berikut := Bantu_1;Akhir := Bantu_1;
Until Akhir = Bantu;Akhir^.Berikut := Nil;
End;
MEMBACA SIMPUL MUNDUR
D
AWAL
B C A
AKHIR
BANTU
A B C D
AWAL
BANTU_1
AKHIR
Latihan Soal Struktur Data (Pertemuan 3)
1. Perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi, disebut :a. Static variable c. Arrayb. Dinamic variable d. Record
5. Statemen yang digunakan untuk menghapus Pointer adalah :a. Delete c. Disposeb. New d. Create
1. Statemen yang digunakan untuk menghapus Pointer adalah :a. Delete c. Disposeb. New d. Create
3. Setiap simpul dalam suatu Linked List terbagi menjadi dua bagian,yaitu :a. Medan informasi dan penyambungb. Medan informasi dan datac. Medan penyambung dan alamatd. Medan penyambung dan node
3. Setiap simpul dalam suatu Linked List terbagi menjadi dua bagian,yaitu :a. Medan informasi dan penyambungb. Medan informasi dan datac. Medan penyambung dan alamatd. Medan penyambung dan node
6. Berikut ini yang tidak termasuk dalam operasi pada linked list adalah :a. Membaca linked list c. Menghapus linked listb. Menambah linked list d. Mengubah linked list
1. Berikut ini yang tidak termasuk dalam operasi pada linked list adalah :a. Membaca linked list c. Menghapus linked listb. Menambah linked list d. Mengubah linked list
5. Penulisan deklarasi pointer yang benar adalah :a. Type ^Simpul = Data;b. Type Simpul = ^Data;c. Type Simpul = Data^;d. Type Simpul ^ = Data;