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;
}
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;
}