1. Jelaskan pengertian dari struktur data! Berikan contohnya! Jawab: Struktur data adalah model logika/ matematika yang secara khusus mengorganisasi data. Sebuah model harus dapat mencerminkan keterhubungan data dengan dunia nyata dan bentuknya sederhana/efektif (dapat memproses data sesuai kebutuhan). Contoh struktur data: Array, Set, Record, Senarai, Tumpukan/Stack, Antrian, Pohon, Graf. 2. Elemen linked list hanya dapat diakses secara sekuensial. Mengapa? Jawab: Linked list atau senatai berantai adalah kunpulan liniar sejumlah data, atau kumpulan komponen yang disusun secara berurutan pointer. Masing-masing komponen dinamakan dengan simpul (node). Simpul dalam suatu Linked list terbagi menjadi dua bagian yaitu medan informasi yang berisi informasi yang akan disimpan dan diolah, dan medan penyambung (Link field) yang berisi simpul berikutnya. Jadi untuk mengakses linked list haruslah secara berurutan (sequential) juga, sesuai dengan susunan komponennya. 3. Buatlah perbandingan antara array dengan linked list! Berikan contohnya! Jawab: NO ARRAY LINKED LIST Alokasi memori pada array bersifat Penggunaan alokasi memori yang dinamis 1 statis dan terbatas sehingga menghindari pemborosan memori 2 Tipe data fisik Tipe data abstrak 3 Tidak dapat dibebaskan dari memory Dapat dibebaskan dari memory 4 Menggunakan konsep indexing Tidak menggunakan konsep indexing 4. Jelaskanlah konsep FIFO yang terdapat pada antrian dan berikan contohnya! FIFO (First In First Out) artinya elemen yang pertama masuk itu yang akan pertama dikeluarkan dari antrian. Contohnya: - Penjualan karcis kereta Api, bioskop, dll. - Penjadualan percetakan (spooling system), misal print manager. - Penjadualan pemakaian CPU pada client server. - Pemakaian jalur I/O (input/output), pada system computer. Dll. 5. Buatlah algoritma untuk menentukan elemen terbesar pada sebuah array A dengan 10 elemen! Jawab: For i 2 to 10 do If (data[i] > max) then Max:= data[i] Endif End for 6. Apakah keuntungan dari Circular Linked list dibandingkan dengan Non Circular linked list? Jawab: Keuntungan menggunakan senarai ini adalah setiap node (elemen) dari senarai dapat dicapai dari sembarang node (elemen) yang lain. 7. Buatlah algoritma untuk menambahkan data pada sebuah STACK! Jawab: Algoritma PUSH: 1. [Periksa kandungan tumpukan, apakah penuh?] Jika TOP = MAKSTUM; Cetakkan ’OVERFLOW’ 2. [Tambahkan TOP dengan 1] TOP:= TOP+1 3. [Masukkan ELEMEN ke dalam lokasi TOP yang baru] S[TOP]:= ELEMEN 4. Return 8. Buatlah algoritma untuk menjumlahkan dua buah matriks dengan orde m x n! Jawab: Deklarasi: Const:M=2 {jumlah baris pada matriks} Const:N=3 {jumlah kolom pada matriks} Baris, kolom :integer A,B,C :array[1..M, 1..N] of integer ALGORITMA: For baris 1 to M do For kolom 1 to N do C[baris, kolom] A[baris, kolom] + B[baris, Kolom] End for End for 9. Buatlah algoritma untuk menghapus elemen pertama pada sebuah circular linked list! Jawab: Procedure hapus awal(input/output S:senarai, output H:address) Kamus Akhir=address Algoritma: If awal(S)=Nil then {kasus 0 elemen) Output(‘senarai kosong’) Else {kasus tidak kosong} Hawal(S) If Next(awal(S))=Awal(S) then {kasus 1 elemen} Awal(S)Nil Else Awal(S)Next(awal(S)) Akhirawal(S) While Next(akhir) ≠ awal(S) do Akhir Next(akhir) Endwhile Next(akhir)awal(S) Endif Endif 10. Sebuah cell/node pada sebuah single linked list memiliki elemen NEXT yang bertipe data pointer. Apakah yang dimaksud dengan pointer? Jelaskan! Jawab: Pointer adalah variable yang menunjuk lokasi memori tertentu. Pendeklarasiannya harus menambahkan tanda ^ di depan tipe pointer. Contoh: Var P1: ^integer; P2: ^double; 11. Bagaimanakah kita dapat mengetahui jika sebuah tumpukan dalam keadaan kosong? Jawab: 12. Sebuah antrian selalu mempunyai 2 variabel yang berfungsi sebagai penunjuk. Apakah variabel tersebut dan jelaskan fungsi dari masing-masing variabel tersebut! Jawab: 13. Mengapakah pada algoritma matriks selalu digunakan struktur perulangan FOR? Jelaskan! Jawab: