Think Different ASD: Soal UTS

UNIVERSITAS BRAWIJAYA
FAKULTAS TEKNIK
PROGRAM STUDI TEKNIK
INFORMATIKA

UJIAN TENGAH SEMESTER GENAP TAHUN AKADEMIK 2010/2011
Matakuliah

: Algoritma dan Struktur Data

Dosen :

(ASD)
Hari/Tanggal

1. SUPRAPTO, ST, M.T
2. ISSA ARWANI, S.Kom., MSc.

: 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 , penyanyi, tahun produksi ,
RBT< struct kodeRBT> )
o Struct kodeRBT (nomor track , kode album ).
B. Buatlah program lengkap untuk memasukkan dan menampilkan data kedalam struct diatas
sejumlah data yang diinginkan (maksimum 20 lagu).
Berapa data yang anda inputkan: 1
Data ke - 1:
Judul lagu
: Udin sedunia

Penyanyi
: Sualuddin
Tahun Produksi
: 2011
Nomer Track
: 3
Kode Album
: MFL
Data lagu yang anda
Data 1:
Penyanyi
:
Judul lagu :
Kode RBT
:
Tahun
:

miliki:
Sualuddin

Udin Sedunia
3-MFL
2011

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

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.

#include
#include
#include
struct node {
char data;
struct node *prev;
struct node *next;
};
typedef struct node node;
node *head, *tail;

// Definisi struct untuk kasus double linked list

// memberi nama alias untuk struct node
// deklarasi pointer head dan tail bertipe node

void append_node (node *temp) // Fungsi menambahkan node dalam linked list
{
if(head==NULL){
temp->prev=NULL;

head=temp;
} else{
tail->next=temp;
temp->prev=tail;
}
temp->next=NULL;
tail=temp;
}
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; idata);
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;
}