UNIVERSITAS BRAWIJAYA FAKULTAS TEKNIK
PROGRAM STUDI TEKNIK INFORMATIKA
UJIAN TENGAH SEMESTER GENAP TAHUN AKADEMIK 2010/2011
Matakuliah
:
Algoritma dan Struktur Data
Dosen :
1.
SUPRAPTO, ST, M.T
(ASD)
2.
ISSA ARWANI, S.Kom., MSc.
Hari/Tanggal :
Kamis
/
14 April 2011
Waktu :
90 Menit
Program Studi :
Teknik Informatika
Sifat :
Tutup Buku
Soal no 1:
Konsep Array dan Struct (nilai: 50 )
A. Buatlah struct untuk data lagu yang berisi tentang judul lagu, penyanyi, tahun produksi,
nomor track dan kode album. Ketentuan :
Program ini akan memiliki dua buah struct, yaitu
o
Struct lagu (judul lagu <string>, penyanyi<string>, tahun produksi <int>,
RBT< struct kodeRBT> )
o
Struct kodeRBT (nomor track <int>, kode album <string>).
B. Buatlah program lengkap untuk memasukkan dan menampilkan data kedalam struct diatas
sejumlah data yang diinginkan (maksimum 20 lagu).
Soal no 2:
Konsep Linked List (nilai: 50 )
Diberikan sebuah kasus untuk enkripsi password yang memanfaatkan Linked List, dengan spesifikasi :
Panjang password 6 digit,
Isi password terserah dari user dan password diinputkan terlebih dahulu.
Enkripsi dilakukan dengan memindahkan 3 node terakhir, menjadi node terdepan. Kemudian sisipkan
1 karakter baru sebagai kunci (misal karakter @ ) setelah node ketiga dari yang dipindahkan tersebut.
A. Gambarkan rangkaian node untuk proses enkripsi diatas dalam
double linked list
Berapa data yang anda inputkan: 1Data ke - 1:
Judul lagu : Udin sedunia
Penyanyi : Sualuddin
Tahun Produksi : 2011
Nomer Track : 3
Kode Album : MFL
Data lagu yang anda miliki: Data 1:
Penyanyi : Sualuddin Judul lagu : Udin Sedunia Kode RBT : 3-MFL
UNIVERSITAS BRAWIJAYA FAKULTAS TEKNIK
PROGRAM STUDI TEKNIK INFORMATIKA
B. Lengkapilah kode beberapa fungsi dibawah ini. Dalam lembar jawaban cukup tuliskan kode
program untuk setiap fungsi.
typedef struct node node; // memberi nama alias untuk struct node
node *head, *tail; // deklarasi pointer head dan tail bertipe node
void append_node (node *temp) // Fungsi menambahkan node dalam linked list
{
void tranverse(){ // Fungsi untuk menampilkan semua data dalam linked list ……… ? // 1. Lengkapi kode untuk fungsi tranverse !
}
void enkripsi(node *key){ // Fungsi untuk melakukan enkripsi data ……… ? // 2. Lengkapi kode untuk fungsi enkripsi ! }
void deleteList(){ // Fungsi untuk menghapus linked list dari memori ……… ? // 3. Lengkapi kode untuk fungsi deleteList ! }
int main() { // Fungsi utama
node *temp; // variable untuk menyimpan alokasi memori dinamis node *key; // variable untuk meyimpan karakter kunci enkripsi key->data='@'; // karakter kunci enkripsi
for (int i=0; i<=5; i++){ // perulangan untuk memasukkan password temp=(node *) malloc (sizeof (node)); // alokasi memori dinamis printf("masukkan karakter ke %d :", i+1); scanf("%c", &temp->data); append_node(temp); // memanggil Fungsi append_node
fflush(stdin); }
printf("Data sebelum di enkripsi:");
tranverse(); // memanggil Fungsi tranverse
enkripsi(key); // memanggil Fungsi untuk enkripsi data printf("Data sesudah di enkripsi:");
tranverse(); // memanggil Fungsi tranverse deleteList(); // memanggil Fungsi deleteList
getch(); return 1;