Anda di halaman 1dari 5

UJIAN TENGAH SEMESTER

GANJIL 2019/2020

Mata Kuliah : Struktur Data Waktu : 90 menit


Dosen : Ni Made Ika Marini. M,ST.,M.Kom Sifat Ujian : Open Note
Kode Kelas : CB193 Program Studi : Sistem Informasi

Petunjuk Pengerjaan :

- Isilah identitas anda secara lengkap pada lembar jawaban yang telah disediakan !
- Tulislah jawaban anda dengan rapi dan huruf yang jelas (mudah dibaca) !
- Jawaban harus secara berurutan !

Soal:

1. Apa yang dimaksud dengan Struktur Data? sebutkan dan jelaskan jenis-jenis Struktur Data!

2. Tulis penggalan program untuk menghapus satu persatu data stack sebanyak 10!
if(tumpuk.top==-1)
cout<<"Tumpukan kosong";
else
cout<<"Data yang akan di pop = "<<tumpuk.data[tumpuk.top];
tumpuk.top--;
}

3. Buat array dengan bahasa pemrograman C++, lakukan:


a. Memasukkan 5 array yang terdiri dari NPM, NAMA, TGL_LAHIR.
b. Sisipkan 1 data di antara array ke-3 dan array ke-4.
c. Hapus array pertama.
d.    Urutkan array tersebut berdasarkan NAMA.

4. Berikan gambaran/ilustrasi dari kasus antrian berikut :


a. Diketahui suatu Antrian/queue dgn max = 6
b. Lakukan Enqueue 4 elemen ke dalam antrian, dimanakah posisi Head dan Tail ?
c. Kemudian lakukan Dequeue 2 elemen dari antrian. Maka dimana posisi Head dan Tail ?
d. Dari keadaan diatas, bagaimanakah kondisi IsFull dan IsEmpty nya ?

Jawaban
1. - Struktur data merupakan sebuah cara yang digunakan untuk menyusun data, menyimpan dan
mengatur data dalam sebuah media penyimpanan agar lebih efisien ketika akan digunakan.

- Jenis – jenis Struktur Data :


1. Struktur data sederhana
a. Array adalah struktur data yang menyimpan type data yang sama dalam jumlah
banyak
b. Record merupakan kumpulan data yang terdiri dari berbagai type data.
2. Struktur data majemuk
a. Stack/tumpukan adalah dimana data yang di ambil adalah data yang paling atas
atau data yang terakhir
b. Queue/atrian dimana data yang di ambil adalah data yang paling bawah atau data
yang pertama
c. List dan Multilist adalah sekumpulan list yang mempunyai elemen yang bertype
sama, yang memiliki keterurutan tertentu, dan setiap elemennya terdiri dari 2 bagian.
d.  Binary-Tree( Pohon biner ) adalah himpunan terbatas yang terdiri dari sebuah
simpul yang disebut sebagai akar dan dua buah himpunan lain yang tidak tergabung
yang merupakan pohon biner yang disebut sebagai sub - pohon kiri (left) dan sub -
pohon kanan (right) dari pohon biner tersebut.
e. Graph merupakan struktur yang memungkinkan pendefinisian keterhubungan tak
terbatas antara entitas data.

2. #include <iostream>
#include <string>
#define MAX 10
using namespace std;
struct Tumpuk{
int top=-1;
int data[10];
} tumpuk;

void pop() {
if(tumpuk.top==-1)
cout<<"Tumpukan kosong";
else {
cout<<"Data yang akan di pop = "<<tumpuk.data[tumpuk.top];
tumpuk.top--;
}
}

int main(){

for (int i = 0; i < 10; i++) {


pop();
}

return 0;

3. Memasukkan 5 array yang terdiri dari NPM, NAMA, TGL_LAHIR.


#include <string.h>
#include <iostream>

using namespace std;


int main()
{

string data_mhs[5][3] = {
{"1","Nina", "2000-05-02"},
{"2","Nani", "2000-02-01"},
{"3","Jeje", "2000-12-06"},
{"4","Juju", "2000-11-08"},
{"5","Diah", "2000-07-09"}
};

Return 0;
}

4.
Sisipkan 1 data di antara array ke-3 dan array ke-4.
#include <string.h>
#include <iostream>

using namespace std;

int main()
{

string data_mhs[5][3] = {
{"1","Nina", "2000-05-02"},
{"2","Nani", "2000-02-01"},
{"3","Jeje", "2000-12-06"},
{"4","Juju", "2000-11-08"},
{"5","Diah", "2000-07-09"}
};
int size = 5, insertPos = 3;

for(int i = size++; i > insertPos; --i){


for(int a = 0; a < 3; a++){
mhs[i][a] = mhs[i-1][a];
}
}

mhs[insertPos][0] = "4.5";
mhs[insertPos][1] = "Satya";
mhs[insertPos][2] = "2001-04-04";

for(int x = 0; x < 6; x++){


for(int y = 0; y < 2; y++){
cout << mhs[x][y] << " | ";
}
cout << endl;
}
return 0;
}
Hapus array pertama.
//Delete Array 1
mhs.NPM[0] = "";
mhs.NAMA[0] = "";
mhs.TGL_LAHIR[0] = "";
Urutkan array tersebut berdasarkan NAMA.
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (mhs.NAMA[j] > mhs.NAMA[j+1]) {
swap( mhs.NAMA[j] , mhs.NAMA[j+1] );
}
}
}

e. Diketahui suatu Antrian/queue dgn max = 6


head tail = - 1
0
1 2 3 4 5 6

f. Lakukan Enqueue 4 elemen ke dalam antrian, dimanakah posisi Head dan Tail ?
head tail = 4
0
A B C D
1 2 3 4 5 6
g. Kemudian lakukan Dequeue 2 elemen dari antrian. Maka dimana posisi Head dan Tail ?
head tail = 4
0
C D
1 2 3 4 5 6
h. Dari keadaan diatas, bagaimanakah kondisi IsFull dan IsEmpty nya ?
 Kondisi IsEmpty = Untuk memeriksa apakah Antrian sudah penuh atau belum
Dengan memeriksa nilai Tail, jika Tail = -1 maka empty.
Contoh pada no a adalah IsEmpty karena Tailnya bernilai -1.
 Kondisi IsFull = Untuk mengecek apakah Antrian sudah penuh atau belum
Dengan mengecek nilai Tail, jika Tail >= MAX-1 itu artinya antrian sudah penuh.
Contoh pada no b itu tidak IsFull karena Tailnya tidak >= MAX-1.
 Selamat Mengerjakan 

Anda mungkin juga menyukai