Petunjuk:
1. Ujian dikerjakan secara berkelompok dengan maksimum 3 mahasiswa per kelompok.
2. Bekerja sendiri. Kelompok maupun Mahasiswa yang terbukti melakukan plagiasi atau
kecurangan dalam bentuk lain diberikan nilai 0 (NOL) dan mendapat sanksi akademik.
3. Program yang menjadi setoran ujian ini diunggah melalui halaman Mata Kuliah Algoritma
dan Struktur Data Prodi masing – masing, yakni pada tautan berikut:
a. S1 Sistem Informasi: https://ecourse.del.ac.id/mod/assign/view.php?id=16884
b. S1 Teknik Elektro: https://ecourse.del.ac.id/mod/assign/view.php?id=16885
4. Ikuti semua prosedur yang diberikan di tiap soal.
5. Durasi ujian tidak termasuk atau diluar istirahat makan siang selama 1 jam.
Soal:
1. [60 poin] Anda diminta untuk menyimpan bilangan prima <= 20 pada lis berkait tunggal
(singly linked list) serta melakukan operasi – operasi insert, find, update, dan delete. Selain
itu, anda akan menambahkan 1 operasi/fungsi ke struktur data. Untuk soal ini, program
anda harus lulus kompilasi! Artinya, program anda hanya akan diperiksa, jika tidak ada
error saat dikompilasi. Error saat eksekusi (runtime error) masih diizinkan.
Prosedur dan spesifikasi:
a. Buat folder dengan nama NIM_soal_1 pada PC/laptop anda.
b. Salin (copy) struktur data Linked List ADT yang telah anda buat saat praktikum ke
folder tersebut. Linked List ADT terdiri atas 2 berkas, yakni antarmuka (list.h) dan
implementasi (list.c).
c. Buat berkas klien Linked List dan simpan dengan nama: client.c.
d. Modifikasi berkas klien dan tulis kode program untuk memasukkan bilangan prima
<= 20 ke linked list. Untuk membantu anda, fungsi untuk mencek apakah sebuah
bilangan prima atau tidak diberikan oleh fungsi primality_test di halaman
selanjutnya. Fungsi mengembalikan 1, jika parameter x prima dan 0 jika bukan
prima. Cetak semua elemen linked list ke monitor. Tampilan terlihat sebagai berikut.
10s2101/alsrudat/uts/
1. unsigned int primality_test(unsigned int x){
2. unsigned int i;
3. if(x < 2)
4. return 0;
5. if(x == 2)
6. return 1;
7. else{
8. for(i = 2; i <= x/2;i++){
9. if(x % i == 0)
10. return 0;
11. }
12. return 1;
13. }
14. }
e. Modifikasi berkas klien untuk mencari sebuah elemen di linked list dan menampilkan
pesan sesuai hasil pencarian, yakni apakah ditemukan atau tidak ditemukan. Tampilan
ditunjukkan gambar di bawah ini.
10s2101/alsrudat/uts/
h. Tambahkan 1 fungsi/operasi untuk membalik (me-reverse) elemen-elemen yang ada
pada linked list dengan batasan berikut.
a) Prototipe fungsi adalah sebagai berikut.
Jika program anda benar sampai di sini, nilai anda bertambah 20.
i. Hapus struktur data linked list. Tampilan ditunjukkan oleh gambar di halaman
selanjutnya.
10s2101/alsrudat/uts/
2. Di bawah ini ditunjukkan gambar queue yang diimplementasikan menggunakan linked list.
Queue memiliki header: Q. Simpul dengan elemen bernilai 2 adalah awal dari queue,
sedangkan simpul dengan elemen bernilai 1 merupakan akhir dari queue.
Q 2 4 5 3 8 9 7 6 1 Null
Q 2 4 8 6 Null
Qo 5 3 9 7 1 Null
10s2101/alsrudat/uts/
4. Gunakan 4 pointer untuk melakukan proses pada fungsi diatas, yaitu:
a. Pointer
b. PointerPrev
c. Tail
d. Tailo
Qo
Tailo
Gambar 3
Q 2 4 5 3 8 9 7 6 1 Null
PointerPrev Pointer
Tail
Qo
Tailo
Gambar 4
Q 2 4 5 3 8 9 7 6 1 Null
PointerPrev Pointer
Tail
Qo
Tailo
Gambar 5
Q 2 4 5 3 8 9 7 6 1 Null
Qo
Gambar 6
Q 2 4 5 3 8 9 7 6 1 Null
Qo
10s2101/alsrudat/uts/
Gambar 7
Q 2 4 5 3 8 9 7 6 1 Null
Qo
Gambar 8
Q 2 4 5 3 8 9 7 6 1 Null
Qo
Gambar 9
Q 2 4 5 3 8 9 7 6 1 Null
Qo
Gambar 10
Q 2 4 5 3 8 9 7 6 1 Null
Qo
Gambar 11
Q 2 4 5 3 8 9 7 6 1 Null
Qo
Gambar 12
SETORAN: Folder NIM_soal_1 dan NIM_soal_2 yang dikompres ke dalam berkas berekstensi
.rar atau .zip dan dikirim via e-course.
10s2101/alsrudat/uts/