A. Bagian I. Studi Kasus

dokumen-dokumen yang mirip
A. Bagian I. Studi Kasus [82]

Bagian I. Studi Kasus [82] Tanda tangan:

Representasi Logic List Linier

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

Variasi List Linier (Bagian 2)

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

IKG2A3/ Pemrograman Terstruktur 2

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

UJIAN AKHIR SEMESTER GANJIL 2007/2008 ALGORITMA & STRUKTUR DATA / CS2014

LIST LINIER 1. DEFINISI

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Struktur Data. Queue (Antrian)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

BAB 1 PENGANTAR KE STRUKTUR DATA

Kode MK/ Pemrograman Terstruktur 2

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

Variasi List Linier. Nisa ul Hafidhoh, MT

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

Soal hari Jumat (16/10) Latihan 10 MS

BAB II STACK Atau TUMPUKAN

MODUL 6 SINGLE & DOUBLE LINKED LIST

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

BAB IX LINKED LIST (SENARAI BERANTAI)

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

Lab. Teknik Informatika Struktur Data 1

BAB IX LINKED LIST (SENARAI BERANTAI)

QUEUE Antrian 1. DEFINISI

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

ALGORITMA & PEMROGRAMAN

STRUKTUR DASAR ALGORITMA

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

LATIHAN UTS Tim Pengajar KU1071 Sem

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

Konstruksi Dasar Algoritma

LIST. Dewi Sartika, M.Kom

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

4 LINKED LIST. 4.1 Istilah-istilah 1. Simpul Simpul terdiri dari dua bagian, yaitu : Bagian data Bagian pointer yang menunjuk ke simpul berikutnya.

Soal hari Selasa (13/10) Latihan 7 AN

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

LOGO STRUKTUR DATA QUEUE

Aturan Penulisan Algoritma Setiap Algoritma akan selalu terdiri dari tiga bagian yaitu : Judul (Header) Kamus Algoritma

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

MODUL PRAKTIKUM STRUKTUR DATA

BAB XI Manipulasi Binary Tree

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game

1. Traversing Untuk algoritma traversing sama seperti pada single Link List

ALGORITMA DAN STRUKTUR DATA

Algoritma Pemrograman

Pohon Biner (Bagian 1)

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Algoritma. Menurut Kamus Besar Bahasa Indonesia Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah.

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

Searching [pencarian] Algoritma Pemrograman

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

05. Double Linked List

Perulangan, Percabangan, dan Studi Kasus

Aplikasi Rekursif dalam Analisis Sintaks Program

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

SENARAI BERANTAI (LINK LIST)

a. TRUE b. FALSE c. Jawaban A dan B keduanya dimungkinkan benar d. Tidak dapat ditentukan e. Tidak ada jawaban di antara A, B, C, D yang benar

Linked List. Bandung 2013

Outline. Ekuivalensi Notasi Algoritmik Dengan ETNA. Struktur Umum

Algoritma dan Pemrograman Searching/Pencarian

Linked List 6.3 & 7.3 NESTED LOOP

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

Perulangan Muh. Izzuddin Mahali, M.Cs. Pertemuan 3. Algoritma dan Struktur Data. PT. Elektronika FT UNY

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

QUEUE (ANTRIAN) Struktur Data - Queue

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Algoritma dan Struktur Data

Pengenalan Pascal. Sejarah Singkat Pascal

Algoritma Pemrograman

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem

Struktur dan Kondisi Perulangan. Struktur Kondisi

Algoritma Pemrograman

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Komentar Program. Komentar program dapat diletakkan dimanapun di dalam program. pembatas (* dan *).

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16

Mesin Karakter dan Mesin Kata

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Transkripsi:

UJIAN TENGAH SEMESTER GANJIL 2008/2009 NIM: dan Struktur Data / CS2014 Nama : HARI : Rabu, 5 November 2008 WAKTU DOSEN SIFAT : 135 menit : TIM : Tutup Buku Tanda tangan: Petunjuk: Periksalah kelengkapan halaman soal. Tidak ada toleransi penilaian bagi mahasiswa yang lalai memeriksa kelengkapan halaman soal. Soal terdiri atas dua bagian dengan rincian: empat soal studi kasus dan lima soal pilihan ganda, dan semua dikerjakan pada lembar soal ini. A. Bagian I. Studi Kasus 1. BUKU Diketahui data pengarang dan buku. Aturan yang berlaku adalah : seorang pengarang dapat mengarang dapat mengarang lebih dari satu buku, dan satu buku dapat dikarang oleh lebih dari 1 buku dapat dikarang oleh lebih dari satu pengarang. Pengarang dan buku memiliki identitas yang unik Contoh : B1 B2 B3 P1 P2 P3 P2 P1 P3 KodeBuku : B1, B2, B3 IdPengarang : P1, P2, P3 Representasi : a. Tuliskan kamus untuk mendefinisikan tipe data berdasarkan representasi struktur Halaman 1 dari 15

data di atas! Jawab: type adrpengarang = ^ElmtPengarang type adrbuku = ^ElmtBuku type adrrelasi = ^ElmtRelasi type ElmtPengarang = <IdPengarang: string; Mengarang: adrrelasi; Next: adrpengarang> type ElmtBuku = <KodeBuku: string; Next: adrbuku> type ElmtRelasi = <Pengarang: adrbuku; Next: adrrelasi> type ListPengarang = <P: adrpengarang> type ListBuku = <B: adrbuku> b. Tuliskan procedure untuk mencetak idpengarang jika diketahui kodebuku. Contoh : input : B3 maka yang dicetak adalah idpengarang dari pengarang buku B3 yaitu: P1, P3 Procedure CetakIdPengarang (input LBuku:ListBuku; input LPengarang:ListPengarang; input KodeCari:string) {I.S. LBuku adalah list buku dan LPengarang list Pengarang, keduanya terdefinisi dan tidak kosong} {F.S. Data pengarang dengan KodeCari diketahui telah dicetak } pbuku: adrbuku ppengarang: adrpengarang prel: adrrelasi pbuku LBuku. {Pencarian KodeBuku yang bersesuaian dengan KodeCari} while (pbuku^.next<>nil) and (pbuku^.kodebuku<>kodecari) do pbuku pbuku^.next {EndWhile} if pbuku^.kodebuku = KodeCari then ppengarang LPengarang. while ppengarang<>nil do prel ppengarang^.mengarang while prel<>nil do if prel^.pengarang=pbuku then output(ppengarang^.idpengarang) prel prel^.next {EndWhile} ppengarang ppengarang^.next else 0utput ( data tidak ada ) Petunjuk : Selain perintah output yang ada di template soal, tidak ada perintah output lagi c. Tuliskan algoritma procedure untuk mencetak jumlah buku yang sudah dikarang oleh masing-masing penulis. Halaman 2 dari 15

Procedure JmlBukuPenulis (input LPengarang :ListPengarang; input LBuku:ListBuku) {I.S. ListPengarang adalah list Pengarang dan LBuku list buku, keduanya terdefinisi dan tidak kosong} {F.S. Kode setiap pengarang beserta jumlah buku yang dikarangnya telah dicetak} ppengarang: adrpengarang prel: adrrelasi JumBuku : integer {Jumlah buku} ppengarang LPengarang. while ppengarang<>nil do output(ppengarang^.idpengarang) prel ppengarang^.mengarang JumBuku 0 while prel<>nil do JumBuku JumBuku + 1 prel prel^.next {prel=nil} Output(JumBuku) ppengarang ppengarang^.next {pmk=nil} Petunjuk : Selain perintah output yang ada di template soal, tidak ada perintah output lagi 2. BILANGAN GANJIL Jika diketahui definisi kamus sebagai berikut: address:^element_list Element_list=Record < info:integer next:address > List=Record < : address > Tuliskan algoritma untuk menghapus semua bilangan ganjil, baik positif maupun negatif. Gambar di bawah ini menggambarkan kondisi initial state dan final state dari persoalan tersebut. Function DeleteOdd(I/O L:List) integer { mengembalikan jumlah elemen yang dihapus jika berhasil, dan nilai 0 jika tidak ada Halaman 3 dari 15

elemen yang terhapus. List L terdefinisi, mungkin kosong.} p,prec : address count: integer count 0 prec nil p first(l) while p<>nil if (info(p)mod 2 = 1) then count++ /* periksa posisi p */ if prec=nil then /*delete first*/ first(l) next(first(l)) p first(l) else /* delete after and last */ next(prec) next(next(prec)) p next(prec) else { jika elemen bilangan genap } prec p p next(p) {end while} count 3. DATA PROYEK Suatu sistem harus mengelola data pegawai terhadap proyek yang dikerjakannya. Hal ini untuk keperluan honor yang akan diterima oleh setiap pegawai sesuai kontribusi waktu. Informasi lengkapnya dapat dilihat pada tabel di bawah ini: Tabel Pegawai Id_Pegawai Nama TanggalLahir P1 Joe 7 Juli 1949 P2 Mary 3 Juni 1961 P3 Andrew 11 Pebruari 1965 P4 Joe 22 April 1964 P5 Jill 17 Mei 1966 Tabel Proyek Id_Proyek Deskripsi Tarif per satuan waktu Proj 1 SIM Akademik 100000 Proj 2 SIM Perpustakaan 200000 Proj 3 SIM Kepegawaian 150000 Tabel Pegawai_Proyek Id_Pegawai No Proyek Total waktu untuk proyek P1 Proj 1 20 P3 Proj 1 16 P2 Proj 2 35 P2 Proj 3 42 P3 Proj 2 17 P2 Proj 1 83 P5 Proj 3 41 Halaman 4 dari 15

Jika informasi tersebut direpresentasikan dengan struktur data internal seperti gambar di bawah ini Jawab: a. Tuliskan kamus untuk representasi tersebut Type adrrelasi: pointer to ElmtRelasi Type adrpeg: pointer to ElmtPeg Type adrproj: pointer to ElmtProj Type ElmtRelasi: < waktu: integer; Pegawai: adrpeg; Proyek: adrproj; nextrelasi: adrrelasi > Type ElmtPeg: < idpeg: string; tgllahir: date; namapeg: string; nextpeg: adrpeg > Type ElmtProj: < id_proj: string; Deskripsi: string; Tarif: integer; nextproj: adrproj > Type ListPProj: adrrelasi Type ListPeg: adrpeg Type ListProj: adrproj b. Tuliskan procedure untuk menuliskan data pegawai lengkap beserta data proyek, jika terlibat dalam proyek. Procedure ListProjLengkap(input Peg: ListPeg, input PProj: ListPProj) {Menuliskan daftar id pegawai & nama pegawai beserta proyek yang Halaman 5 dari 15

dikerjakan oleh pegawai tersebut I.S: List Pegawai & pegawai_proyek terdefinisi, mungkin kosong. F.S: Menuliskan informasi pegawai beserta proyek yang dikerjakan. Jika list pegawai kosong, tuliskan List pegawai kosong.} ptrpeg: adrpeg ptrrelasi: adrrelasi ptrpeg firstpeg If ptrpeg=nil then output List pegawai kosong Else Repeat Output (idpeg(ptrpeg)) Output (namapeg(ptrpeg)) ptrrelasi firstpproj while (ptrrelasi<>nil) if pegawai(ptrrelasi)=ptrpeg then output (id_proj(proyek(ptrrelasi))) ptrrelasi nextrelasi(ptrrelasi) {seorang pegawai sudah ditulis informasinya} {cek pegawai berikutnya} ptrpeg nextpeg(ptrpeg) Until ptrpeg=nil c. Tuliskan procedure untuk menghitung honor proyek yang diterima setiap pegawai yang terlibat berdasarkan kontribusi waktu. Tampilan yang diharapkan sebagai berikut: Pegawai Total Honor P1 Nominal 1 P2 Nominal 2 P3 Nominal 3 P5 Nominal 4 Procedure HitungHonorProj(input Peg: ListPeg, input PProj: ListPProj) {Menuliskan daftar honor setiap pegawai berdasarkan kontribusi waktu I.S: List Pegawai & Pegawai_Proyek terdefinisi, mungkin kosong F.S: Hanya pegawai yang mempunyai kontribusi waktu didalam proyek, dihitung honornya sesuai tarif proyek. Jika list pegawai kosong, tuliskan List Pegawai kosong. Ada kemungkinan seorang pegawai mendapat honor lebih dari satu proyek} ptrpeg: adrpeg ptrrelasi: adrrelasi honor: integer ptrpeg Peg if ptrpeg=nil then output ( List Pegawai Kosong ) else Halaman 6 dari 15

repeat output(namapeg(ptrpeg)) ptrrelasi PProj honor 0 while (ptrrelasi<>nil) if pegawai(ptrrelasi)=ptrpeg then honor honor + waktu(ptrrelasi)*tarif(proyek(ptrrelasi)) ptrrelasi nextrelasi(ptrrelasi) {honor seorang pegawai selesai dihitung, tuliskan} Output ( Total honor:,honor) ptrpeg nextpeg(ptrpeg) until ptrpeg=nil d. Tuliskan procedure untuk menuliskan nama-nama pegawai yang terlibat dalam proyek berdasarkan Id_Proyek-nya. Procedure ProyekPeg(input PProj:ListPProj, input IdProyek: string) {Mencari nama-nama pegawai yang mengerjakan proyek IdProyek I.S: List Pegawai_Proyek tidak kosong. F.S: Jika ditemukan Id_proyek=IdProyek, dituliskan nama pegawai yang terlibat. Jika tidak ada IdProyek, tidak menuliskan apa-apa. } ptrrelasi: adrrelasi ptrrelasi PProj while (ptrrelasi<>nil) if id_proj(proyek(ptrrelasi))=idproyek then output(namapeg(pegawai(ptrrelasi))) ptrrelasi nextrelasi(ptrrelasi) 4. Diketahui sebuah list berisi sejumlah elemen, beberapa procedure primitive telah disediakan, antara lain: function IsEmpty(L:List) boolean /* I.S. sembarang*/ /* F.S. Mengembalikan nilai True jika list kosong Mengembalikan nilai False jika list tidak kosong */ Procedure CreateList(Output L:List) /* I.S. sembarang*/ /* F.S. Terbentuk List Kosong*/ function Alokasi(L: integer) address /* I.S. sembarang*/ /* F.S. Terbentuk List Kosong*/ Procedure Insert(I/O L:List, P:address) /* I.S. L mungkin kosong, P Sudah di alokasi */ /* F.S. P elemen pertama List L*/ Procedure InsertLast(I/O L:List, P:address) Halaman 7 dari 15

/* I.S. L mungkin kosong, P Sudah di alokasi */ /* F.S. P elemen Terakhir dari List L */ Tugas anda adalah sebagai berikut : a. Mendefinisikan Struktur List yang akan anda buat Type address: ^ElemenList Type ElemenList = < info: integer; next: address; > Type List = < : address > b. List tersebut akan dipisah menjadi 2 buah list yang baru dan berbeda (List L akan di pisah menjadi L1 dan L2), buatlah algoritma untuk memisahkan list tersebut Function JumlahElemenList(L:List) integer /* I.S. sembarang*/ /* F.S. mengembalikan banyaknya elemen list, mengirimkan 0 jika list kosong */ JmlElmn : int; P : address P (L); JmlElmn 0; while (P <> Nil) do JmlElmn JmlElmn + 1; P next(p); end while; JmlElmn Procedure PisahList(output L1:List, output L2:List, input L:List) /* I.S. L mungkin kosong */ /* F.S. dibuat dua buah list L1 dan L2 */ /* seharusnya ada tambahan statemen bahwa L tetap */ /* L1 berisi setengah elemen dari List L, */ /* dan L2 sisanya */ /* jika banyak elemen di L ganjil, maka separuh nya adalah JumlahElemenList(L) div 2 */ JmlL1 : int; Counter : int; Last, newp : address; CreateList(L1); CreateList(L2); if (L) <> Nil then Halaman 8 dari 15

JmlL1 JumlahElemenList(L) div 2; Counter 0 {traversal list L sampai akhir} Last (L) while (next(last) <> Nil) do newp=alokasi(info(last)) if (Counter <= JmlL1) then if (L1) = Nil then Insert(L1, newp); else InsertLast(L1, newp); endif else if (L2) = Nil then Insert(L2, newp); else InsertLast(L2, newp); endif endif Counter Counter + 1: Last next(last); end while else print LIST KOSONG! endif B. Bagian II. Pilihan Ganda Berilah tanda silang (X) pada jawaban yang tepat. 1. Diketahui definisi kamus dan gambar sebagai berikut: : {List direpresentasi dg pointer} Type Address : ^ElmtList {pointer to ElmList type InfoType :.{terdefinisi} type ElmtList : <Info: InfoType, Next: address> type List : address juga boleh} A B C D Dibawah ini adalah potongan algoritma yang benar agar P menunjuk elemen terakhir dari list adalah : A. Procedure NunjukAkhir (input L: list, output P:address ) {IS : Terdefinisi L FS : P menunjuk elemen terakhir dari List, elemen list tidak berubah} Halaman 9 dari 15

: B. C. D. E. Jawab: D : P L. while P <> nil do P P^.next Procedure NunjukAkhir (input L: list, output P:address ) {IS : Terdefinisi L FS : P menunjuk elemen terakhir dari List, elemen list tidak berubah} : : P L. while P ^.next<> nil do P P^.next Procedure NunjukAkhir (input : list, output P:address ) {IS : Terdefinisi L FS : P menunjuk elemen terakhir dari List, elemen list tidak berubah} : : P while P <> nil do P P^.next Procedure NunjukAkhir (input : list, output P:address ) {IS : Terdefinisi L FS : P menunjuk elemen terakhir dari List, elemen list tidak berubah} : : P while P^.next <> nil do P P^.next Procedure NunjukAkhir (input L : list, output P:address ) {IS : Terdefinisi L FS : P menunjuk elemen terakhir dari List, elemen list tidak berubah} : : while P^.next <> nil do L. L.^.next P L. Halaman 10 dari 15

2. Diketahui Potongan program sebagai berikut : [01]typedef struct telmtlist *address; [02]typedef int infotype; [03]typedef struct telmtlist [04] { [05] infotype info; [06] address next; [07] }Elmlist; [08] [09]typedef struct [10] { [11] address first; [12] }list; [13] [14]void BalikList(list *L) [15]{ [16] address p,preclast,last; [17] /*mencari alamat elemen terakhir*/ [18] last= (*L).first; [19] while (last->next!=null) [20] { [21] last=last->next; [22] } [23] /*last->next=nil*/ [24] p=(*l).first; [25] /*Proses membalik list*/ [26] (*L).first = last; [27] do [28] { [29] preclast=p; [30] /*mencari alamat sebelum elemen yang ditunjuk last*/ [31] while (preclast->next!= last) [32] preclast=preclast->next; [33] last->next=preclast; [34] last=preclast; [35] }while (last!=p); [36] last->next=null; [37] } Procdure Balik List di atas digunakan untuk membalik susunan list Ilustrasi : Statement yang salah dari potongan program di atas adalah : A. baris [35] harusnya while (last->next!=p); B. baris [33] harusnya last=preclast; C. baris [33] harusnya last=preclast->next; D. baris [19] harusnya while (last->next!=null) E. Tidak ada statement yang salah Jawab: E Halaman 11 dari 15

3. Jika diketahui representasi fisik suatu list dengan menggunakan pointer adalah sebagai berikut : type adrelmt = ^Elmt type Elmt = <info : character, kanan : adrelmt, kiri : adrelmt > type List = <first : adrelmt> P A B C D manakah bagian algoritma yang tepat untuk menghapus elemen C dari list : A. P^. Kiri^. Kanan P^. Kanan P^. Kiri Nil P^. Kanan^. Kiri P^. Kiri P^. Kanan Nil free(p) B. P^ Kiri^ Kanan P^ Kanan P^ Kanan^ Kiri P^ Kiri P^ Kiri Nil P^ Kanan Nil free(p) C. P^. Kiri^. Kanan P^. Kanan P^. Kanan^. Kiri P^. Kiri P^. Kiri Nil P^. Kanan Nil free(p) D. P^ Kiri^ Kanan P^ Kanan P^ Kiri Nil P^ Kanan^ Kiri P^ Kiri P^ Kanan Nil free(p) E. P^. Kiri Nil P^. Kanan Nil P^. Kiri^. Kanan P^. Kanan P^. Kanan^. Kiri P^. Kiri free(p) Halaman 12 dari 15

Jawab: C 4. Jika suatu list dideklarasikan sebagai berikut : type adrelmt = ^Elmt type Elmt = <info : character, Next : adrelmt> type List = <first : adrelmt> Pada gambar di bawah ini, manakah instruksi yang tepat untuk menambahkan elemen sesudah elemen yang ditunjuk oleh pointer P : Q P E A D F A. Next(P) Q Next (Q) Next(P) B. Next(Q) Next (P) Next (P) Q C. Next (Q) P Next (P) Q D. Next(P) Q Next (Q) P E. Next (P) Q Next (Q) Next (P) Jawab: B 5. Diketahuhi deklarasi list seperti berikut : (Deklarasi) Type adrcabangor = ^ElmtCabangOR Type adrkontingen = ^ElmtKontingen Halaman 13 dari 15

Type adratlet = ^ElmtAtlet Type ElmtCabangOR = <Nama_Cabang : string; Peserta : adrkontingen Next_Cab : adrcabangor> Type ElmtKontingen= <Nama_Kontingen : string; Anggota_Kontingen : adratlet Next_Kontingen : adrkontingen> Type ElmtAtlet = <Id_Atlet : integer; Next_Atlet : adratlet> Type List = < : adrcabangor> Var L :List Representasi logik list dengan deklarasi seperti di atas adalah : A.......... B....... C.... Halaman 14 dari 15

D.... Jawab: B E. Tidak ada jawaban yang tepat Halaman 15 dari 15