0% menganggap dokumen ini bermanfaat (0 suara)
541 tayangan14 halaman

Soal Struktur Data

1. Dokumen tersebut berisi soal-soal latihan struktur data yang mencakup topik tipe data, operator, array satu dan dua dimensi, serta pointer. 2. Soal-soal tersebut berupa pilihan ganda untuk menguji pemahaman konsep-konsep dasar struktur data. 3. Materi latihan meliputi karakteristik dan contoh penerapan array, operasi stack, notasi postfix, dan penggunaan pointer.

Diunggah oleh

ZeIlaLatifah
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
541 tayangan14 halaman

Soal Struktur Data

1. Dokumen tersebut berisi soal-soal latihan struktur data yang mencakup topik tipe data, operator, array satu dan dua dimensi, serta pointer. 2. Soal-soal tersebut berupa pilihan ganda untuk menguji pemahaman konsep-konsep dasar struktur data. 3. Materi latihan meliputi karakteristik dan contoh penerapan array, operasi stack, notasi postfix, dan penggunaan pointer.

Diunggah oleh

ZeIlaLatifah
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 14

1. KISI-KISI SOAL UTS SEMESTER 2 BSI.

Latihan Soal Struktur Data ( Pertemuan 1 )


Pilih Jawaban & Alasannya :
1. Type data dibawah ini, yang tidak termasuk dalam type data sederhana tunggal,
adalah :
a. Boolean

b. String

c. Char

d. Integer

e. Float

2. = =, <=, >=, !=, termasuk dalam operator...


a. Aritmatika

b. Unary

c. Binary

d. Relasi

e. Bitwise
3. Type data yang menghasilkan bentuk keluaran nilai True dan False (Benar dan Salah),
adalah :
a. Boolean

b. String

c. Char

d. Integer

e. Float

4. void main()
{ ....(a).... x,y,z;
clrscr();
cout<<"n input nilai X=";
cin >>x; cout<<"n input nilai Y=";
cin >>y; z = x + y;
cout <<"n hasil penjumlahan ="<<z;
getch();
}
Type data yang tepat untuk (a) adalah ....
a. Boolean

b. String

c. Char

d. Integer

e. Array

Alasannya : Karena dalam type data ini merupakan bentuk penjumlahan sederhana
5. void main()
{
int r = 10; int s;
clrscr(); s = 10 + ++r;
cout <<"r = "<< r << 'n';
cout <<"s = "<< s << 'n';
getch();
}
Hasil eksekusi dari program diatas adalah ....
a. r = 11, s = 21

b. r = 11, s = 20

c. r = 12, s = 21

d. r = 10, s = 21

e. r = 10, s = 20

Alasannya : Karena r sudah memiliki nilai 10 dan ++r berarti 10 + 1 = 11, sedangkan s
sendiri memiliki nilai 10 + r tadi yang bernilai 11 = 21

. Pertemuan2
1. Diketahui float A[5] dan lokasi terletak di alamat 00F(H) maka lokasi A[3] adalah :
Diketahui :
@A[5] =
A[3] B
= 00F(H) i
=3L=4
Jawab : B + ( i 1 ) * L 00F(H) + ( 3 1 ) * 4 00F(H) + 8(D) = 8(H) 0017(H)
2. Diketahui double A[20] dan lokasi awal terletak ai alamat 00AB(H) maka lokasi A[15]
adalah : ...
Diketahui : @A[20] = A[15] B = 00AB(H) i = 15 L = 8
Jawab : B + ( i 1 ) * L 00AB(H) + ( 15 1 ) * 8 00AB(H) + 112(D) 00AB(H) +
70(H) 011B(H)
3. Diketahui int A[100] dan lokasi awal terletak di alamat 00FB(H) maka lokasi A [78}
adalah :
Diketahui: @A[100] = A[78] B = 00FB(H) i = 78 L = 2

Jawab :

B + ( i 1 ) * L 00FB(H) + ( 78 1 ) * 2 00FB(H) + 154(D) 00FB(H) +


9A(H) 017C(H)
4. Diketahui char A [50] dan lokasi awal terletak di alamat 00FF(H) maka lokasi A [38]
adalah :
Diketahui : @A[50] = A[38] B = 00FF(H) i = 38 L = 1
Jawab
: B + ( i 1 ) * L 00FF(H) + ( 38 1 ) * 1
00FF(H) + 37(D) 00FF(H) + 25(H) 00124(H)
Pertemuan 3
1. Terdapat Array float A[5][4] dan lokasi awal terletak di alamat 00F(H) maka lokasi
A[3][4] secara kolom dan baris adalah :
Diketahui : @M[i][j] = A[3][4] @M[0][0] = 00F(H) i = 3 j = 4 N = 4 L = 4 K = 5
Jawab : Secara Baris
@M[i][j] = @M[0][0] + {(i 1)* N + (j 1)}*L A[3][4]
= 00F(H) + {(3 1)* 4 + (4 1)}*4
= 00F(H) + 44(D)
= 00F(H) + 2C(H)
= 03B(H)
Secara Kolom
@M[i][j] = @M[0][0] + {(j 1)* K + (i 1)}*L A[3][4]
= 00F(H) + {(4 1)* 5 + (3 1)}*4
= 00F(H) + 68(D)
= 00F(H) + 44(H)
= 053(H) 2.
2. Terdapat Array Long Double A[50][75] dan lokasi awal terletak di alamat 00FF(H)
maka lokasi A[48][60] secara kolom dan baris adalah :
Diketahui : @M[i][j] = A[48][60]
@M[0][0] = 00FF(H)
i = 48
j = 60
N = 75
L = 10
K = 50
Jawab : Secara Baris
@M[i][j] = @M[0][0] + {(i 1)* N + (j 1)}*L A[48][60]
= 00FF(H) + {(48 1)* 75 + (60 1)}*10
= 00FF(H) + 35840(D)
= 00FF(H) + 8C00(H)
= 8CFF(H)
Secara Kolom
@M[i][j] = @M[0][0] + {(j 1)* K + (i 1)}*L A[3][4]
= 00FF(H) + {(60 1)* 50 + (48 1)}*10
= 00FF(H) + 29970(D)
= 00FF(H) + 7512(H)
= 7611(H)
3. Terdapat Array Double A[25][50] dan lokasi awal terletak di alamat 009F(H) maka
lokasi A[17][48] secara kolom dan baris adalah :

Diketahui : @M[i][j] = A[17][48]


@M[0][0] = 009F(H)
i = 17
j = 48
N = 50

L=8

K = 25

Jawab : Secara Baris


@M[i][j] = @M[0][0] + {(i 1)* N + (j 1)}*L A[17][48]
= 009F(H) + {(17 1)* 50 + (48 1)}*8
= 009F(H) + 6776(D) = 009F(H) + 1A78(H)
= 1B17(H)
Secara Kolom
@M[i][j] = @M[0][0] + {(j 1)* K + (i 1)}*L A[3][4]
= 009F(H) + {(48 1)* 25 + (17 1)}*8
= 009F(H) + 9528(D)
= 009F(H) + 2538(H)
= 25D7(H)
4. Deklarasi Array X adalah Double A[2][4][5] dengan alamat awal index [0][0][0]
berada di 0021(H) tentukan berapa alamat Array di [2][2][2] ....???
Diketahui : @ [n][m][p] = A [2][4][5]
M [0][0][0] = 0021(H)
L=8
Jawab :
@ [n][m][p] = M[0][0][0] + {((n-1)*(index 1)) + ((m-1)*((index 2)) +
((p-1) *(index 3)}*L
= 0021(H) + {((2-1)*(2))+((4-1)*((2))+((5-1)*(2))*8
= 0021(H) + 128(D)
= 0021(H) + 80(H)
= 01A1(H)
TUGAS 4 STRUKTUR DATA
1.

Stack termasuk Linier List karena pemasukan dan penghapusan elemennya hanya
daat dilakukan pada satu posisi, yaitu posisi akhir dari List (TOP)

2. Apa saja perlakuan yang dimungkinkan sehingga suatu STACK dikatakan dalam
kondisi hampa?
Jawab: Dengan fungsi IsEmpty, dengan cara memeriksa TOP of STACK jika TOP
masih =-1 maka berarti Stack masih kosong / hampa. Dengan Fungsi Clear,
Digunakan untuk mengosongkan Stack/ membuat Stack hampa sehingga TOP pada
Stack berada kembali di posisi TOP =-1
3.

Sebutkan empat operasi pada STACK dan beri contohnya


Jawab : ISEMPTY : Untuk memeriksa apakah Stack kosong
Contoh : int IsEmpty ()
{
If (tumpukan.top ==-1 Return 1;
Else Return 0;
}
ISFULL : Untuk memeriksa apakah STACK penuh

Contoh : int IsFull ()


{
If(tumpukan.top == MAX_STACK-1 Return 1;
Else Return 0;
}
PUSH : Untuk menambahkan item pada posisi yang paling atas (TOP)
Contoh : void push
( char d[5] )
{ Tumpuk.top ++ Strcpy (tumpuk.data[tumpuk.top],d);
}
POP : Digunakan untuk menghapus elemen yang berada pada posisi
paling atas dari Stack
Contoh: void pop ()
{
Printf(Data yang di POP = %sn, tumpuk.data
[tumpuk.top]); Tumpuk.top --;
}
4. Sebutkan dua kesalahan yang mungkin terjadi pada pengoperasian Stack dan pada
kondisi seperti apa kesalahan itu bisa terjadi
Jawab :
a. Pemasukan elemen
b. Penghapusan elemen Kondisinya terjadi ketika pemasukan dan penghapusan
elemen tidak dilakukan pada satu posisi, padahal kita tahu bahwa Stack merupakan
bentuk khusus dari Linier List yang pemasukan dan penghapusan elemennya hanya
dapat dilakukan pada satu posisi, yaitu posisi akhir dari list ( TOP )
5. Konversikan notasi infix A-B*C^D^( E*F / ( G H )) ke postfix
Jawab : A - B * C ^ D ^ ( E - F / ( G - H ) ) ;
stack - - * * ^ ^ ^ ( ^ ( ^ ( ^ ( ^ ( ^ ( ( ^ ( ( ^ ( ( ^ ( ( ^ ( ^ ^ Out put A B - C *
D ^ E * F / G - H ^ Postfix : AB-C*D^E*F/G-H^

. Soal Latihan Struktur Data


1. Type data dibawah ini, yang tidak termasuk dalam tipe data sederhana tunggal, adalah :
a. Boolean
d. Integer
b. String
e. float
c. Char
2. ==, <=, >=, !=, termasuk dalam operator
a. Aritmatika

d. Relasi

b. Unary

e. Bitwise

c. Binary
3. Type data yang menghasilkan bentuk keluaran nilai True dan False (Benar dan Salah) ,
adalah :

a. Boolean

d. Integer

b. String

e. float

c. Char
4. void main()
{ ....(a).... x,y,z;
clrscr();
cout <<n input nilai X=;
cin >> x; cout <<n input nilai Y=;
cin >> y; z = x + y;
cout <<n hasil penjumlahan = << z;
getch(); }
Tipe data yang tepat untuk (a) adalah .
a. Boolean

d. Integer

b. String

e. Array

c. Char

5. void main()
{ int r = 10;
int s;
clrscr();
s = 10 + ++r;
cout <<r = << r << n;
cout <<s = << s << n;
getch(); }
Hasil eksekusi dari program diatas adalah .
a. r = 11, s = 21

d. r = 10, s = 21

b. r = 11, s = 20

e. r = 10, s = 20

c. r = 12, s = 21
1. Setiap elemen dari sebuah Array haruslah mempunyai type data yang sama, termasuk
dalam karakteristik array yaitu :
a. Statis

d. Heterogen

b. Dinamis

e. Homogen

c. Terurut
2. Array yang sering digunakan dalam menterjemahkan matriks pada pemrograman, adalah
array berdimensi :
a. Satu

d. Satu dan Dua

b. Dua

e. Satu dan Tiga

c. Tiga
3. Contoh aplikasi array dimensi dua adalah..
a. Input data suhu
b. Input nama hari
c. Input nilai mahasiswa perkelas dan matakuliah
d. Input nilai ipk mahasiswa
e. Input nama bulan
4. Terdapat Array : A [5][4] maka jumlah elemen Array tersebut adalah
a. 25

d. 15

b. 35

e. 20

c. 9
5. Diketahui float A[5] dan lokasi awal terletak di alamat 00F(H), maka lokasi A[3] adalah
a. 00FC(H)

d. 01B(H)

b. 017(H)

e. 111(H)

c. 071(H)
1. Array yang sangat banyak elemen nol-nya, dikenal sebagai :

a. Upper tringular Array

d. One Dimensional Array

b. Lower tringular Array

e. Multi Dimensional Array

c. Sparse Array
2 Array yang seluruh elemen dibawah diagonal utamanya = 0, dikenal sebagai :
a. Upper tringular Array

d. One Dimensional Array

b. Lower tringular Array

e. Multi Dimensional Array

c. Sparse Array
3. Terdapat Array : A [3][4][5] maka jumlah elemen Array tersebut adalah
a. 25

d. 15

b. 35

e. 60

c. 12
4. Diketahui suatu array segitiga memiliki 4 baris dan kolom. Jumlah elemen yang bukan
nol pada array segitiga tersebut adalah ..
a. 10

d. 16

b. 8

e. 20

c. 4
5. Deklarasi Array X adalah int A [2][4][5], dengan alamat awal index A[0][0][0] berada di
0021(H) dan ukuran type data int = 2 Tentukan berapa alamat array di A[2][2] [2] ?
a. 0034(H)

d. 0052(H)

b. 0022(H)

e. 0034(H)

c. 0055(H)
1. Diketahui suatu deklarasi variabel int x,y,*z; variabel yang merupakan penunjuk ke
pointer adalah :
a. x

d. x dan y

b. y

e. x, y dan z

c. z

2. Perintah yang tepat untuk mempersiapkan sebuah node baru berserta alokasi memorinya,
adalah .
a. Create

d. New

b. Null

e. Insert

c. Input
3. Jika Tail = Null, maka kondisi Linked List adalah :
a. Penuh

d. Tidak dapat ditambah

b. Kosong

e. Baru

c. Terisi
4. Gambar diatas menunjukkan bentuk penambahan node pada posisi :
a. Belakang

d. Tengah dan Depan

b. Depan

e. Depan dan Belakang

c. Tengah
5. Perintah yang tepat untuk menyatakan Linked list berada dalam kondisi kosong, adalah
a. head=tail

d. bantu=head

b. head=tail=null

e. bantu=tail

c. bantu=null
Diketahui suatu stack dgn max_stack = 6
1. Bila dilakukan PUSH 3 elemen kedalam stack, kemudian di PUSH lagi 2 elemen dan di
POP 3 elemen. Maka dimana posisi Top of Stack ?
2. IsEmpty pada kondisi terakhir adalah ?
3. Dari kondisi diatas (no.3) Berapa elemen yg hrs di PUSH unt mencapai kondisi penuh
Top of Stack = max_stack ?
4. Berapa elemen yg hrs di POP unt mencapai kondisi IsEmpty = True

1. Operasi Stack yang digunakan untuk memeriksa apakah stack sudah penuh, adalah ..
a. PUSH

d. ISEMPTY

b. POP

e. ISFULL

c. CLEAR
2. Menambah satu (increment) nilai TOP of STACK setiap ada penambahan elemen stack
selama stack masih belum penuh, merupakan langkah awal pada operasi STACK yaitu
..
a. PUSH

d. ISEMPTY

b. POP

e. ISFULL

c. CLEAR
23. Jika pada stack terdapat kondisi TOP of STACK = MAX_STACK - 1 maka stack berada
dalam keadaan ...
a. ISEMPTY

d. RETREIVE

b. CLEAR

e. FULL

c. TOP
24. Pada saat awal, Top of Stack selalu bernilai :
a. Top = 0

d. Top = Max_Stack

b. Top = 1

e. Top = Max_Stack - 1

c. Top = -1
25. Diberikan perintah/instruksi pada program C++, yaitu tumpuk.top++; Maksud dari
perintah/instruksi tersebut adalah .
a. Top = Top + 1

d. Top = - 1

b. Top = Top - 1

e. Top = 1

c. Top = 0
26. Operasi pada Antrian yang digunakan untuk menambahkan item pada posisi paling
belakang, adalah
a. Create

d. Enqueue

b. Clear

e. Dequeue

c. Tail
27. Perintah IsFull pada antrian digunakan untuk :
a. Memeriksa apakah antrian sudah penuh
b. Memeriksa apakah Antrian penuh atau kosong
c. Menambahkan elemen ke dalam Antrian
d. Menghapus elemen dari dalam Antrian
e. Memeriksa apakah antrian sudah kosong
28. Yang tidak termasuk dalam operasi antrian, adalah ...
a. Clear

d. Push

b. Enqueue

e. Dequeue

c. IsFull
29. Menghapus elemen dari antrian dilakukan dari posisi :
a. Tengah / Middle
b.Depan/head
c.Bawah /bottom
d.Belakang/tail
e.atas/top
30. Maksud dari perintah program antrian.head=antrian.tail=-1; adalah untuk ......

a. Menambah elemen antrian


b Mengecek kondisi antrian kosong atau tidak
c. Mengecek kondisi antrian penuh atau tidak
d. Membentuk atau menghapus semua elemen antrian
e. Menghapus elemen antrian

1. Simpul Khusus pada pohon yang memiliki derajat keluar >= 0, dan derajat masuk = 0,
adalah .
a. Node / simpul d. edge / ruas b. Root / akar e. level c. Leaf / daun
2. Jika suatu pohon biner memiliki simpul sebanyak 5 maka banyaknya ruas adalah : a. 2 d.
5 b. 3 e. 6 c. 4
3. Pohon biner yang memiliki ciri Semua simpul (kecuali daun) memiliki 2 anak dan tiap
cabang memiliki panjang ruas yang sama, adalah pohon biner . a. Lengkap / complete
b. Similer c. Miring / skewed d. Penuh / full e. ekivalen
4. Suatu pohon memiliki level = 4, maka banyaknya Simpul Maksimum yang dapat
terbentuk sampai Level 4 adalah . a. 8 b. 15 c. 12 d. 4 e. 7
5. Pohon biner yang memiliki struktur dan informasinya sama disebut : a. Miring (Skewed)
c. Terstruktur b. Ekivalent d. Similer e. Complete
1. Kunjungan dengan urutan : kunjungi simpul akar, cabang kiri,cabang kanan, adalah
kunjungan. a. Preorder d. Postorder b. Inorder e. Outorder c. Symetric Order
2. Dengan kunjungan PREORDER maka untai yang dihasilkan adalah : a. A B D C b. A B C
D c. B A D C d. B D C A e. B C D A A CB D
3. Dari gambar disamping, notasi POSTFIX yang dihasilkan adalah a. A B C - * b. A - B
* C c. A B - C * d. * - A B C e. A B - * C * C- A B
4. Dari gambar diatas,notasi PREFIX yang dihasilkan adalah : a. A B C - * b. A - B * C c. *
- C A B d. A B - C * e. * - A B C
5. Berikut ini, yang tidak termasuk dalam kunjungan pohon biner adalah : a. Inorder d.
Preorder b. Outorder e. Postorder c. Symetric Order * C- A B
1. Tehnik pengurutan data yang paling tepat digunakan untuk tabel data yang sangat besar
adalah a. Selection Sort d. Quick Sort b. Bubble Sort e. Insertion Sort c. Merge Sort
2. Mengelompokan deret bilangan kedalam 2 bagian, 4 bagian, 8 bagian, dst, merupakan
salah satu iterasi didalam metode: a. Selection Sort d. Quick Sort b. Bubble Sort e.
Insertion Sort c. Merge Sort
3. Jika urutan data pada langkah pertama adalah : 5 8 2 10 3 maka urutan data secara
ascending pada iterasi berikutnya dengan metode Insertion sort adalah a. 2 8 5 10 3 d.
2 3 5 8 10 b. 2 3 5 10 8 e. 2 5 8 10 3 c. 2 5 8 3 10
4. (1) Tentukan batas bawah (LB) dan batas atas (UB) (2) Bila LB>UB, maka data ditukar
Pernyataan diatas adalah langkah pengurutan data dengan metode : a. Bubble d. Insertion
b. Merge e. Quick c. Selection

5. Jika diketahui urutan data 26 18 21 6 12, bila urutan data pada langkah berikutnya
menjadi 18 26 6 21 12, maka metode sorting yang digunakan adalah a. Quick d.
Selection b. Bubble e. Merge c. Insertion
1. Kemungkinan terbaik (best case) untuk pencarian data dengan sequential search adalah
jika . a. Data yang dicari berada di indeks belakang b. Data yang dicari berada di
indeks terdepan c. Data yang dicari berada di tengah indeks d. Data yang dicari tidak ada
pada indeks array e. Tidak ada jawaban yang benar
2. Yang merupakan metode terbaik dalam searching adalah a. Linier Searching d. A, B dan
C benar b. Sequential Searching e. A, B dan C salah c. Binary searching
3. Pencarian data dengan metode Binary search akan berhenti bila data yang dicari sudah
ditemukan, yaitu pada kondisi a. cari < data[m] d. cari > data[m] b. cari = data[m] e.
cari = 0 c. cari <> data[m]
4. Suatu teknik pencarian data dalam array dimensi 1 yang akan menelusuri semua elemen
array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu
(acak) adalah metode a. Linier Searching d. A, B dan C benar b. Sequential Searching e.
A, B dan C salah c. Binary searching
5. Bila diketahui urutan data sebagai berikut : 5 10 15 20 25 Pencarian data 10 dengan
metode Binary dapat diselesaikan pada langkah ke a. 1 b. 2 c. 3 d. 4 e. 5
1. Graph yang memiliki ruas sejajar dan gelung disebut a. Gelung/self loop d. Graph
sederhana b. Multigraph e. Euler graph c. Simple Graph
2. Perjalanan (Walk) dalam suatu graph akan disebut tertutup bila . a. V1 = Vn d. V1 =
V(n-1) b. Vn = V(n-1) e. V1 = 0 c. V1 <> Vn
3. Bila diketahui banyaknya ruas pada suatu graph = 7, maka jumlah derajat Graph-nya
adalah . a. 14 b. 49 c. 6 d. 21 e. 7
4. Bila diketahui jumlah derajat semua simpul pada suatu graph adalah 20, maka banyaknya
ruas pada graph tersebut adalah . a. 19 b. 21 c. 40 d. 10 e. 15
5. Dari gambar diatas, yang termasuk TRAIL adalah . a. a,b,c,h,g,d,a d. a,b,h,k,f,g,b b.
a,e,f,k,h,c,d e. a,d,g,k,f,d,b c. a,b,c,g,h,c,d
1. Matriks penyajian graph yang menghubungkan vertex dengan vertex, tanpa ruas sejajar,
disebut matriks a. Incidence d. Undirected Graph b. Adjacency e. Semua jawaban salah
c. Directed Graph
2. Maksimum jumlah busur dari n simpul dalam Directed Graph a. n ( n - 1) / 2 d. (n 1) / 2
b. n ( n - 1) e. (n 1) + 2 c. n - 1
3. Bila diketahui simpul dari suatu graph berarah (Directed Graph) adalah 5, maka
maksimum jumlah busur dari graph tersebut adalah. a. 25 b. 20 c. 10 d. 15 e. 2

4. Penelusuran graph yang diawali dari node-1 kemudian melebar pada node-2, node-3 dan
seterusnya, adalah penelusuran dengan cara . a. Breadth First Search d. Node First
Search b. Depth First Search e. Edge First Search c. Width First Search
5. Critical Path dari simpul A ke simpul D pada graph disamping adalah a. 15 d. 33 b. 18
e. 38 c. 20 A B C D5 8 10 12 18

Anda mungkin juga menyukai