wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

UTS Alpro 25/26

Total questions: 84

Worksheet time: 57mins

Name
Class
Date
1.
Apa fungsi dari link node terakhir dalam single linked list?
a)
Menunjuk ke null, menandakan akhir dari list.
b)
Menunjuk ke node pertama, membentuk list melingkar.
c)
Menyimpan data yang paling besar.
d)
Menunjuk ke node kedua.
e)
Menyimpan data yang paling kecil.
2.
Apa fungsi dari link "next" dalam single linked list?
a)
Menunjuk ke node berikutnya dalam list.
b)
Menunjuk ke node sebelumnya dalam list.
c)
Menunjuk ke node pertama dalam list.
d)
Menunjuk ke node terakhir dalam list.
e)
Menunjuk ke node tengah dalam list.
3.
Apa fungsi dari revtraverse() dalam kode ini? deff revtraverse() : while current is not None: print(f"{i}. {current.Data}") current = current.prev i -= 1
a)
Mencetak node dari yang terakhir ke yang pertama
b)
Mencetak node dari yang pertama ke yang terakhir
c)
Menambahkan node ke lis
d)
Menghapus node dari list
e)
Menyimpan node dalam urutan terbalik
4.
Apa yang dimaksud dengan "currentNode.next is None" dalam double linked list?
a)
Link yang mendakan node terakhir dalam list.
b)
Link yang menunjuk ke node pertama dalam list.
c)
Link yang menunjuk ke node tengah dalam list.
d)
Link yang menunjuk ke node kedua dalam list.
e)
Link yang menunjuk ke node ketiga dalam list.
5.
Apa yang dimaksud dengan "START" dalam konteks linked list?
a)
Link yang menunjuk ke node pertama dalam list.
b)
Link yang menunjuk ke node terakhir dalam list.
c)
Link yang menunjuk ke node tengah dalam list.
d)
Link yang menunjuk ke node kedua dalam list.
e)
Link yang menunjuk ke node ketiga dalam list.
6.
Apa yang dimaksud dengan traversal dalam linked list?
a)
Proses mengakses setiap node dalam linked list satu per satu.
b)
Proses menghapus setiap node dalam linked list satu per satu.
c)
Proses menambahkan node baru di akhir linked list.
d)
Proses mengganti data dalam setiap node linked list.
e)
Proses menggabungkan dua linked list menjadi satu.
7.
Apa yang terjadi jika kita menambahkan node baru di tengah single linked list?
a)
Node baru akan terhubung dengan node sebelumnya dan berikutnyA.
b)
Node baru akan terhubung dengan node pertamA.
c)
Node baru akan terhubung dengan node terakhir.
d)
Node sebelumnya dari node baru akan dihapus.
e)
Node berikutnya dari node baru akan dihapus.
8.
Apa yang terjadi jika kita menghapus node tengah dari single linked list?
a)
Node sebelumnya akan menunjuk ke node berikutnya dari node yang dihapus.
b)
Node berikutnya akan menunjuk ke node sebelumnya dari node yang dihapus.
c)
Node pertama akan menjadi null.
d)
Node terakhir akan menjadi null.
e)
Tidak ada perubahan pada list.
9.
Bagaimana cara deleteNode() menangani penghapusan node yang bukan merupakan node pertama atau terakhir?
a)
Memutus link node sebelum dan sesudahnya dan menghapus node
b)
Menghapus hanya node yang ditunjuk dan membiarkan list terputus
c)
Mencetak pesan error dan tidak menghapus node
d)
Mengubah node yang dihapus menjadi NULL
e)
Membuat list baru tanpa node yang dihapus
10.
Bagaimana cara mengidentifikasi node terakhir dalam single linked list?
a)
Node yang berikutnya menunjuk ke null.
b)
Node yang sebelumnya menunjuk ke null.
c)
Node yang pertama kali ditambahkan.
d)
Node yang terakhir kali dihapus.
e)
Node yang memiliki nilai terbesar.
11.
Bagaimana cara mengupdate link dalam double linked list saat menghapus node di tengah list?
a)
Mengubah link next dari node sebelumnya dan link previous dari node setelahnya.
b)
Menghapus node tanpa mengupdate link.
c)
Hanya mengubah link next dari node sebelumnya.
d)
Hanya mengubah link previous dari node setelahnya.
e)
Menetapkan semua link ke null.
12.
Dalam double linked list, bagaimana cara membalikkan urutan nodes?
a)
Menukar link next dan previous di setiap node.
b)
Menghapus semua node dan menambahkannya kembali dalam urutan terbalik.
c)
Mengubah head menjadi tail dan sebaliknya tanpa mengubah link node.
d)
Hanya mengubah link next dari setiap node.
e)
Hanya mengubah link previous dari setiap node.
13.
Konversikan tahap ini ke dalam kode Python: Assign value to the data field of the new node
a)
newNode.Data = nim
b)
nim = newNode.Data
c)
START.Data = nim
d)
newNode.next = nim
e)
newNode.prev = nim
14.
Konversikan tahap ini ke dalam kode Python: Make the next field of newNode point to START
a)
newNode.next = START
b)
START.next = newNode
c)
START = newNode.next
d)
START.prev = newNode
e)
newNode.prev = START
15.
Repeat until current is NULL or newNode.Data < current.Data Konversikan kondisi pengulangan ini ke Python:
a)
while current is not None and nim >= current.Data:
b)
while current == None:
c)
while nim <= current.Data:
d)
while START.next is None:
e)
while nim == current.Data:
16.
Bagaimana cara mengetahui bahwa hanya ada satu elemen di dalam queue array?
a)
Jika FRONT == REAR
b)
Jika FRONT == -1
c)
Jika REAR == MAX - 1
d)
Jika FRONT > REAR
e)
Jika REAR == -1
17.
Bagaimana cara mengetahui bahwa REAR berada pada index terakhir dalam queue array?
a)
Jika REAR == MAX - 1
b)
Jika REAR == 0
c)
Jika REAR == FRONT
d)
Jika REAR < FRONT
e)
Jika REAR == NULL
18.
Jika nilai FRONT lebih besar daripada REAR, maka artinya apa dalam konteks queue array?
a)
Queue dalam keadaan kosong atau data sudah habis ter-dequeue
b)
Queue penuh
c)
Queue dalam kondisi circular penuh
d)
REAR belum diinisialisasi
e)
FRONT sedang menunjuk ke elemen terakhir
19.
Bagaimana cara mengetahui jika queue full dalam queue circular array?
a)
Jika (REAR + 1) % MAX == FRONT
b)
Jika REAR == MAX - 1
c)
Jika FRONT == -1
d)
Jika REAR == FRONT
e)
Jika FRONT > REAR
20.
Bagaimana mekanisme terjadinya circular array dalam queue?
a)
Ketika REAR mencapai index terakhir, ia kembali ke index 0
b)
Ketika FRONT direset menjadi -1
c)
Ketika array diisi dari belakang
d)
Ketika REAR di-set ke MAX - 1
e)
Ketika FRONT mengikuti REAR
21.
Pada implementasi queue menggunakan array, bagaimana Anda mendeteksi bahwa queue sudah penuh?
a)
FRONT == REAR
b)
FRONT == -1
c)
REAR == array size - 1
d)
FRONT == 0
e)
Tidak ada yang benar
22.
Queue adalah struktur data yang mengikuti prinsip?
a)
LIFO (Last In First Out)
b)
FIFO (First In First Out)
c)
FILO (First In Last Out)
d)
LILO (Last In Last Out)
e)
Tidak ada yang benar
23.
Queue dapat diimplementasikan dengan menggunakan?
a)
Array
b)
Linked List
c)
Stack
d)
Array dan Linked List
e)
Tidak ada yang benar
24.
Untuk menghapus elemen dari queue yang diimplementasikan menggunakan linked list, link FRONT harus diarahkan ke?
a)
Node sebelumnya
b)
Node berikutnya
c)
Node tengah
d)
Node terakhir
e)
Node pertama
25.
If the queue is empty: Set FRONT = 0 Increment REAR by 1 QUEUE[REAR] = element Implementasi yang tepat adalah dalam konteks queue array
a)
if(front == -1) front = 0; rear += 1; queue[rear] = x;
b)
rear--; queue[rear] = x;
c)
queue[++front] = x;
d)
front = 0; rear = 0; queue[front] = x;
e)
queue[rear] = x; rear++;
26.
If REAR = MAX - 1: Print "Overflow" Stop Tindakan yang benar adalah…
a)
Menghentikan proses insert.
b)
Menggeser array.
c)
Mengatur REAR = -1.
d)
Mengatur FRONT = 1.
e)
Menyisipkan elemen ke FRONT
27.
If FRONT = -1: FRONT = 0 REAR = 0 Langkah ini berarti…
a)
Inisialisasi posisi elemen pertama.
b)
Menghapus seluruh queue.
c)
Menggeser data.
d)
Menjadikan queue circular.
e)
Membalik isi queue.
28.
If REAR is at last index: REAR = 0 Langkah ini berfungsi untuk…
a)
Mengembalikan REAR ke awal sehingga queue menjadi circular.
b)
Menghapus elemen terakhir.
c)
FRONT mengikuti REAR.
d)
Mengatur queue menjadi kosong.
e)
Menggandakan kapasitas array.
29.
Langkah “Assign value to the data field of the new node” pada algoritma setara dengan
a)
newNode.data = value;
b)
front.data = value;
c)
rear.data = value;
d)
newNode.next = value;
e)
front = newNode;
30.
Dalam queue berbasis linked list, jika queue kosong, link FRONT dan REAR menunjuk ke __________.
a)
Node pertama
b)
Node terakhir
c)
NULL
d)
Node tengah
e)
Tidak ada yang benar
31.
Dalam queue circular, ketika REAR mencapai indeks terakhir dari array, nilai REAR harus diatur ke?
a)
0
b)
-1
c)
array size
d)
array size - 1
e)
Tidak ada yang benar
32.
Dalam queue yang diimplementasikan dengan array, posisi FRONT dan REAR diinisialisasi ke __________ ketika queue kosong.
a)
0
b)
-1
c)
1
d)
Array size
e)
Tidak ada yang benar
33.
Dalam implementasi queue menggunakan linked list, apa yang harus dilakukan saat menghapus elemen jika antrian hanya memiliki satu elemen?
a)
Set FRONT dan REAR ke NULL
b)
Set FRONT dan REAR ke 0
c)
Set FRONT dan REAR ke 1
d)
Set FRONT dan REAR ke indeks terakhir
e)
Tidak ada yang benar
34.
Bagaimana cara mengetahui bahwa hanya ada satu elemen di dalam stack?
a)
Jika TOP == 0
b)
Jika TOP == -1
c)
Jika TOP == 1
d)
Jika TOP > 1
e)
Jika TOP == MAX - 1
35.
Bagaimana cara mengetahui bahwa stack berada pada posisi paling atas array (index terakhir)?
a)
Jika TOP == MAX - 1
b)
Jika TOP == 0
c)
Jika TOP == -1
d)
Jika TOP < 0
e)
Jika TOP == FRONT
36.
Apa artinya ketika nilai TOP bernilai -1 dalam konteks stack array?
a)
Stack kosong dan belum berisi elemen apa pun
b)
Stack penuh
c)
Stack berada pada kondisi overflow
d)
Stack berada di tengah array
e)
Elemen terakhir telah dipop tanpa push baru
37.
Bagaimana cara mengetahui bahwa stack penuh dalam implementasi array?
a)
Jika TOP == MAX - 1
b)
Jika TOP == 0
c)
Jika MAX == 0
d)
Jika TOP > MAX
e)
Jika TOP < -1
38.
Bagaimana mekanisme push dalam stack array?
a)
TOP ditambah 1, lalu elemen disimpan pada indeks TOP
b)
TOP dikurangi 1, lalu elemen disimpan pada indeks TOP
c)
FRONT berpindah ke atas array
d)
Elemen disimpan pada indeks 0 selalu
e)
Elemen disisipkan di tengah array
39.
Bagaimana cara mengetahui bahwa stack linked list kosong?
a)
Jika TOP == null
b)
Jika TOP.data == 0
c)
Jika TOP.next == null
d)
Jika TOP == -1
e)
Jika ukuran list negatif
40.
Dalam operasi push pada stack linked list, apa langkah pertama yang harus dilakukan?
a)
Membuat node baru dan mengisi nilai datanya
b)
Menghapus TOP
c)
Menjadikan TOP menunjuk ke node berikutnya
d)
Menjadikan node baru sebagai node terakhir
e)
Mengatur TOP menjadi null
41.
newNode.next = TOP TOP = newNode Apa makna dari langkah tersebut?
a)
Node baru ditempatkan di atas stack
b)
Node baru ditempatkan di bawah stack
c)
TOP dihapus
d)
Node baru dijadikan tail dari list
e)
Node baru tidak terhubung dengan node lainnya
42.
Bagaimana mekanisme pop pada stack linked list?
a)
Mengambil data dari node TOP dan memindahkan TOP ke TOP.next
b)
Mengambil data dari node terakhir (tail)
c)
Memindahkan TOP ke node sebelumnya
d)
Menghapus semua node sekaligus
e)
Menukar posisi head dan tail
43.
Jika langkah pop dilakukan seperti berikut: temp = TOP TOP = TOP.next Apa implikasinya?
a)
Node teratas dihapus dari struktur stack
b)
Node baru ditambahkan
c)
Node terakhir disisipkan
d)
Stack menjadi penuh
e)
Semua link menjadi null
44.
Ketika sebuah elemen di-push ke dalam stack array, apa yang terjadi pada link top?
a)
Decrement
b)
Increment
c)
Tidak berubah
d)
Diset ke 0
e)
Diset ke MAX
45.
Jika stack berisi elemen-elemen {1, 2, 3, 4} dari bawah ke atas, apa hasil dari operasi POP dua kali berturut-turut?
a)
{1, 2}
b)
{3, 4}
c)
{1, 2, 3}
d)
{1, 4}
e)
Stack menjadi kosong
46.
Manakah dari pernyataan berikut tentang stack yang salah?
a)
Stack adalah struktur Last-In-First-Out (LIFO).
b)
Elemen dalam stack dihapus dari bawah.
c)
Stack dapat diimplementasikan menggunakan array atau linked list.
d)
Operasi PUSH menambahkan elemen ke atas stack.
e)
Operasi POP menghapus elemen paling atas dari stack.
47.
Jika elemen 'A', 'B', 'C', dan 'D' ditambahkan ke stack dalam urutan tersebut, dan kemudian elemen dihapus sampai stack kosong, dalam urutan apa elemen tersebut akan dihapus?
a)
A, B, C, D
b)
D, C, B, A
c)
A, D, C, B
d)
D, A, B, C
e)
C, D, A, B
48.
Dalam stack yang diimplementasikan menggunakan array, berapakah nilai awal variabel 'top'?
a)
-1
b)
0
c)
1
d)
MAX - 1
e)
MAX
49.
Dalam stack yang diimplementasikan menggunakan array, berapakah nilai akhir variabel 'top'?
a)
-1
b)
0
c)
1
d)
MAX - 1
e)
MAX
50.
Dalam implementasi stack menggunakan array, jika top = 4 dan ukuran array adalah 10, berapa banyak elemen yang ada dalam stack?
a)
4
b)
5
c)
6
d)
10
e)
9
51.
Pada single linked list, link START menyimpan alamat node pertama. Mana akibat PALING serius jika program secara tidak sengaja mengubah START sehingga menunjuk ke node ke-3, sementara tidak ada link lain yang menyimpan node sebelumnya?
a)
List menjadi kosong tetapi dapat dibangun kembali dengan mudah.
b)
Node ke-1 dan ke-2 menjadi tidak dapat diakses dan menyebabkan memory leak.
c)
Node ke-3 akan terhapus otomatis oleh sistem operasi.
d)
Seluruh list akan terhapus dan semua node hilang.
e)
Tidak ada efek, karena START hanya variabel lokal.
52.
Perhatikan pseudocode insert di AWAL single linked list: 1. new ← node baru 2. new.data ← x 3. new.next ← START 4. START ← new Mana implementasi yang paling sesuai?
a)
Node new = new Node(); new.data = x; START = new; new.next = null;
b)
Node new = new Node(); new.data = x; new.next = START; START = new;
c)
Node new = new Node(); new.data = x; START.next = new; START = new;
d)
Node new = new Node(); new.next = START; START = new; new.data = x;
e)
Node new = new Node(); START = START.next; START = new;
53.
Diberikan single linked list berisi 10 → 20 → 30 → 40 → NULL. Dilakukan operasi berikut: current = START while current.next != NULL do current = current.next endwhile current.next = newNode Apa posisi newNode setelah algoritma dijalankan?
a)
Di depan node 10.
b)
Di antara 10 dan 20.
c)
Di antara 20 dan 30.
d)
Di antara 30 dan 40.
e)
Di belakang node 40 (menjadi elemen terakhir).
54.
Suatu fungsi ingin MENGHAPUS node pertama yang memiliki nilai x pada single linked list terurut menaik. Manakah kondisi while yang PALING tepat untuk mencari node sebelum node yang akan dihapus? Assume: current mulai dari START dan prev = NULL.
a)
while current != NULL and current.data == x
b)
while current != NULL and current.data < x
c)
while current != NULL and current.data <= x
d)
while current != NULL or current.data < x
e)
while current.data < x and current != NULL
55.
Pada double linked list, untuk menghapus node tengah yang ditunjuk link p (bukan node pertama atau terakhir), update link mana yang WAJIB dilakukan?
a)
p.prev.next ← p.next saja.
b)
p.next.prev ← p.prev saja.
c)
p.prev.next ← p.next dan p.next.prev ← p.prev.
d)
START ← p.next dan p.prev ← NULL.
e)
REAR ← p.prev dan p.next ← NULL.
56.
Perhatikan fungsi revTraverse pada double linked list: void revTraverse(Node last) { Node cur = last; while (cur != null) { System.out.print(cur.data + " "); cur = cur.prev; } } Kapan pemanggilan revTraverse akan mencetak list secara TERBALIK dengan benar?
a)
Jika last selalu menunjuk ke node pertama.
b)
Jika setiap node hanya memiliki link next.
c)
Jika link prev setiap node telah di-set dengan benar saat insert/delete.
d)
Jika list hanya berisi satu elemen.
e)
Jika START dan REAR selalu menunjuk ke node yang sama.
57.
Sebuah fungsi insertSorted akan menyisipkan nilai baru ke single linked list sehingga urutan menaik tetap terjaga. Bagian inti algoritma: prev = null cur = START while cur != null and newNode.data > cur.data do prev = cur cur = cur.next Setelah loop, operasi mana yang BENAR untuk menyisipkan newNode?
a)
newNode.next = START; START = newNode;
b)
prev.next = newNode; newNode.next = cur;
c)
newNode.next = cur; if prev != null then prev.next = newNode else START = newNode;
d)
cur.next = newNode; newNode.next = prev;
e)
START = newNode; newNode.next = null;
58.
Perhatikan kode berikut: void deleteAll(Node START) { Node cur = START; while (cur != null) { Node tmp = cur.next; // free(cur); cur = tmp; } START = null; } Apa tujuan utama pemanggilan fungsi tersebut?
a)
Menghapus hanya node pertama dalam list.
b)
Menghapus hanya node terakhir dalam list.
c)
Menghapus semua node dalam list dan mengosongkan list.
d)
Membalik urutan node di dalam list.
e)
Menghitung jumlah node dalam list.
59.
Pada single linked list, ingin dilakukan operasi 'insertAfter(Node p, int x)' yang menyisipkan node baru setelah node p. Manakah urutan update link yang PALING aman untuk menghindari kehilangan bagian list?
a)
p.next = newNode; newNode.next = p.next;
b)
newNode.next = p.next; p.next = newNode;
c)
START = newNode; newNode.next = p;
d)
newNode.next = START; START = newNode;
e)
p = newNode; newNode.next = p.next;
60.
Misalkan kita ingin menghapus SEMUA node yang bernilai x dalam single linked list. Pendekatan mana yang PALING tepat?
a)
Menghapus hanya kemunculan pertama x dan langsung berhenti.
b)
Melakukan traversal sekali dan menghapus node bernilai x sambil meng-update prev dan current.
c)
Menghapus node bernilai x hanya jika x berada di posisi terakhir.
d)
Menyalin seluruh list ke array, menghapus di array, lalu membangun ulang list.
e)
Meng-set START = NULL tanpa memeriksa nilai node.
61.
Sebuah fungsi ingin MENGGABUNGKAN dua single linked list terurut menaik (L1 dan L2) menjadi satu list terurut L3 TANPA menyalin data (hanya mengatur ulang link). Pernyataan mana yang PALING benar?
a)
Kompleksitas waktu minimal O(1) karena hanya perlu menautkan tail L1 ke head L2.
b)
Kompleksitas waktu minimal O(n + m) dengan men-scan kedua list seperti algoritma merge pada merge sort.
c)
Harus menyalin semua node ke list baru sehingga kompleksitas waktu O((n + m)²).
d)
Tidak mungkin dilakukan tanpa menyalin data.
e)
Harus mengurutkan ulang masing-masing list sebelum digabung.
62.
Diberikan implementasi stack dengan array: int S[5]; int TOP = -1; Operasi PUSH(x): 1. if TOP == 4 → Overflow 2. else TOP = TOP + 1; S[TOP] = x; Setelah urutan operasi: PUSH(2), PUSH(4), PUSH(6), POP(), PUSH(8), nilai TOP dan isi stack dari indeks 0..TOP adalah …
a)
TOP = 2, isi: [2, 4, 6]
b)
TOP = 3, isi: [2, 4, 6, 8]
c)
TOP = 1, isi: [2, 4]
d)
TOP = 2, isi: [2, 4, 8]
e)
TOP = 1, isi: [2, 8]
63.
Implementasi POP untuk stack array: deff pop() { if (TOP == -1) { print("Underflow"); return -999; } int x = S[TOP]; TOP = TOP - 1; return x; } Apa arti kondisi TOP == -1?
a)
Stack penuh.
b)
Stack kosong, tidak ada elemen yang bisa di-pop.
c)
Stack berisi satu elemen.
d)
Indeks array keluar batas.
e)
Stack memiliki ukuran maksimum 1.
64.
Perhatikan stack yang diimplementasikan dengan LINKED LIST. Algoritma PUSH: 1. new ← node baru 2. new.data ← x 3. new.next ← top 4. top ← new Algoritma POP: 1. Jika top = NULL → Underflow 2. tmp ← top 3. x ← top.data 4. top ← top.next 5. free(tmp) Keuntungan utama implementasi stack seperti ini dibanding array tetap ukuran 5 adalah …
a)
Operasi PUSH dan POP menjadi O(n).
b)
Tidak mungkin terjadi stack overflow selama memori masih tersedia.
c)
Tidak perlu memeriksa underflow.
d)
Dapat mengakses elemen di tengah stack dengan O(1).
e)
Memori yang dipakai selalu lebih kecil daripada array.
65.
Diberikan fungsi berikut: deff clearStack() : while (TOP != -1) POP() Apa yang dilakukan fungsi tersebut?
a)
Menghapus satu elemen dari stack.
b)
Menghapus elemen terbawah stack.
c)
Mengosongkan seluruh isi stack.
d)
Membalik urutan elemen stack.
e)
Menghitung banyak elemen stack.
66.
Stack digunakan untuk mengecek kesesuaian tanda kurung pada ekspresi, misalnya "(a+[b*c])". Karakter mana yang HARUS di-push ke stack selama proses pengecekan?
a)
Semua huruf alfabet.
b)
Semua operator aritmatika (+, -, *, /).
c)
Hanya tanda kurung buka: '(', '[', '{'.
d)
Hanya tanda kurung tutup: ')', ']', '}'.
e)
Semua karakter kecuali spasi.
67.
Diberikan stack awal kosong. Dilakukan operasi berikut: 1. PUSH('A') 2. PUSH('B') 3. PUSH('C') 4. POP() 5. PUSH('D') 6. POP() Urutan karakter yang KELUAR dari stack (hasil POP) adalah …
a)
C, D
b)
C, B
c)
A, B
d)
B, C
e)
D, C
68.
Sebuah fungsi ingin menyalin isi stack S1 ke stack S2 sehingga urutan elemen di S2 SAMA dengan S1 (elemen teratas tetap teratas). Jika hanya diperbolehkan operasi PUSH dan POP, serta boleh menggunakan satu stack bantu sementara, teknik mana yang paling tepat?
a)
POP semua dari S1 ke S2 langsung.
b)
POP S1 ke stack bantu, lalu POP stack bantu ke S2.
c)
POP S1 ke S2 lalu POP S2 ke stack bantu.
d)
POP S1 ke stack bantu, lalu PUSH lagi ke S1.
e)
Tidak mungkin dilakukan dengan operasi PUSH/POP saja.
69.
Perhatikan kode berikut pada stack array: deff push(int x) S[++TOP] = x; Apa asumsi yang HARUS benar agar implementasi ini aman?
a)
TOP selalu bernilai 0 sebelum pemanggilan pertama.
b)
Tidak perlu mengecek overflow, karena array secara otomatis memperbesar diri.
c)
Programmer MENJAMIN bahwa TOP tidak akan melebihi indeks maksimum array.
d)
Stack tidak akan pernah kosong.
e)
Array S hanya berisi bilangan positif.
70.
Stack digunakan untuk mengubah notasi infix menjadi postfix. Pada saat membaca operator dengan prioritas lebih RENDAH daripada operator di top of stack, apa yang seharusnya dilakukan algoritma?
a)
Langsung push operator baru ke stack.
b)
Mengeluarkan (POP) operator dari stack ke output sampai kondisi prioritas terpenuhi, lalu push operator baru.
c)
Menghapus semua operator dari stack tanpa mengirim ke output.
d)
Menukar posisi operand di output.
e)
Mengabaikan operator baru.
71.
Misalkan kita mengimplementasikan stack dengan LINKED LIST tapi salah menuliskan algoritma PUSH sebagai berikut: deff push(int x) Node newNode = new Node(); newNode.data = x; top.next = newNode; top = newNode; Asumsikan awalnya top menunjuk ke node teratas. Apa masalah utama pada implementasi ini?
a)
Stack menjadi queue (FIFO) bukan LIFO.
b)
Node baru selalu ditambahkan di awal list.
c)
Jika stack kosong (top = null), terjadi error.
d)
Elemen kedua dari atas hilang.
e)
Tidak terjadi masalah, algoritma sudah benar.
72.
Diberikan stack dengan isi (dari bawah ke atas): [1, 2, 3, 4]. Operasi berikut dilakukan: 1. x = POP(); 2. y = POP(); 3. PUSH(x + y); Berapa isi stack akhir (dari bawah ke atas)?
a)
[1, 2, 3, 4]
b)
[1, 2, 7]
c)
[1, 2, 3]
d)
[7]
e)
[3, 4, 7]
73.
Misalkan stack diimplementasikan dengan array berukuran N. Kapan kondisi stack FULL biasanya terpenuhi?
a)
TOP == -1
b)
TOP == 0
c)
TOP == N
d)
TOP == N - 1
e)
TOP == 1
74.
Queue array linear dengan MAX = 5 menggunakan FRONT dan REAR. Kondisi awal: FRONT = -1, REAR = -1 (kosong). Aturan ENQUEUE: - Jika kosong → FRONT = REAR = 0 - Else → REAR = REAR + 1 Setelah operasi: ENQUEUE(3), ENQUEUE(5), ENQUEUE(7), nilai FRONT dan REAR adalah …
a)
FRONT = 0, REAR = 1
b)
FRONT = 1, REAR = 3
c)
FRONT = 0, REAR = 2
d)
FRONT = 2, REAR = 2
e)
FRONT = -1, REAR = 2
75.
Dengan queue array linear seperti pada soal sebelumnya, operasi DEQUEUE didefinisikan sebagai FRONT = FRONT + 1. Apa kelemahan utama implementasi ini?
a)
Nilai FRONT dan REAR tidak pernah berubah.
b)
Setelah beberapa kali ENQUEUE dan DEQUEUE, slot kosong di awal array tidak dapat digunakan lagi.
c)
Queue akan otomatis menjadi circular.
d)
Tidak bisa terjadi underflow.
e)
Elemen baru selalu disisipkan di depan.
76.
Perhatikan circular queue dengan MAX = 5. Isi array: [3, 5, 7, 10, 15] FRONT = 0, REAR = 4. Jika dilakukan satu operasi DEQUEUE menggunakan algoritma: - jika FRONT == REAR → kosongkan queue - else FRONT = (FRONT + 1) % MAX Apa kondisi baru FRONT, REAR, dan elemen yang dihapus?
a)
FRONT = 1, REAR = 4, elemen dihapus = 3
b)
FRONT = 0, REAR = 3, elemen dihapus = 15
c)
FRONT = 4, REAR = 4, elemen dihapus = 3
d)
FRONT = 1, REAR = 0, elemen dihapus = 15
e)
FRONT = -1, REAR = -1, elemen dihapus = 3
77.
Implementasi queue dengan LINKED LIST menggunakan link FRONT dan REAR. Algoritma ENQUEUE (kasus umum, queue tidak kosong): 1. new ← node baru 2. new.data ← x; new.next ← NULL 3. REAR.next ← new 4. REAR ← new Apa yang terjadi jika langkah 3 dilewatkan (tidak dijalankan)?
a)
Node baru tetap masuk sebagai elemen pertama.
b)
Node baru tidak terhubung ke queue sehingga tidak pernah bisa diakses dari FRONT.
c)
FRONT akan menjadi NULL.
d)
Queue otomatis menjadi circular.
e)
Tidak terjadi apa-apa, queue tetap benar.
78.
Pada queue linked list, algoritma DEQUEUE (hapus di depan) yang benar adalah …
a)
Menghapus node yang ditunjuk REAR.
b)
Menghapus node yang ditunjuk FRONT dan memindahkan FRONT ke node berikutnya.
c)
Menghapus node yang ditunjuk FRONT dan memindahkan REAR ke node sebelumnya.
d)
Menghapus node pertama dan terakhir sekaligus.
e)
Menambah node di depan.
79.
Setelah operasi DEQUEUE pada queue linked list, diketahui queue menjadi kosong. Update link apa yang HARUS dilakukan?
a)
FRONT = NULL saja.
b)
REAR = NULL saja.
c)
FRONT dan REAR sama-sama di-set NULL.
d)
FRONT menunjuk ke REAR.
e)
REAR menunjuk ke FRONT.
80.
Perhatikan circular queue dengan MAX = 5. Keadaan awal: FRONT = 1, REAR = 3, isi aktif: [\,20,23,10,\,]. Dilakukan operasi ENQUEUE(15) satu kali dengan algoritma: - jika FRONT = -1 → FRONT = REAR = 0 - else if REAR == MAX-1 → REAR = 0 - else REAR = REAR + 1 - Queue[REAR] = elemen Apa kondisi akhir FRONT dan REAR?
a)
FRONT = 1, REAR = 4
b)
FRONT = 0, REAR = 4
c)
FRONT = 1, REAR = 0
d)
FRONT = 0, REAR = 3
e)
FRONT = 2, REAR = 4
81.
Lanjut dari Queue 8, setelah ENQUEUE(15) kita punya FRONT = 1, REAR = 4. Sekarang dilakukan DEQUEUE satu kali. Dengan algoritma circular queue standar, bagaimana kondisi FRONT dan REAR?
a)
FRONT = 2, REAR = 4
b)
FRONT = 1, REAR = 3
c)
FRONT = 0, REAR = 4
d)
FRONT = -1, REAR = -1
e)
FRONT = 2, REAR = 0
82.
Diberikan antrian permintaan layanan di server. Struktur data apa yang PALING sesuai untuk model antrian ini dan mengapa?
a)
Stack, karena permintaan terakhir harus dilayani dulu.
b)
Queue, karena permintaan pertama yang datang harus dilayani lebih dulu (FIFO).
c)
Tree, karena hubungan antar permintaan bercabang.
d)
Graf, karena banyak jalur layanan.
e)
Array terurut, karena mempermudah pencarian.
83.
Perhatikan pseudocode berikut untuk circular queue: deff isEmpty() return FRONT == -1 deff isFull() return (FRONT == 0 and REAR == MAX-1) or (REAR + 1 == FRONT) Apa yang dikembalikan oleh isEmpty() dan isFull() ketika ada satu elemen di queue?
a)
isEmpty() = true, isFull() = false
b)
isEmpty() = false, isFull() = true
c)
isEmpty() = false, isFull() = false
d)
isEmpty() = true, isFull() = true
e)
Tergantung nilai elemen.
84.
Misalkan kita ingin mengimplementasikan sistem antrean yang bisa MELIHAT elemen yang akan dilayani berikutnya tanpa menghapusnya. Operasi apa yang perlu ditambahkan ke interface queue?
a)
push()
b)
peek() atau front()
c)
pop()
d)
reverse()
e)
merge()