You are on page 1of 3

SOAL UJIAN MIDTERM FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS AHMAD DAHLAN

Mata Kuliah : Struktur Data Hari/Tanggal: Senin, 1 Nopember 2010 Dosen : Waktu : 90 menit 1. Drs. Wahyu Pujiyono, M.Kom 2. Fiftin Voviyanto, S.T 3. TEdi Fibri Asmara, S.T Sifat : Open Book. Hanya boleh membuka diktat dan Petunjuk Praktikum. Tidak diperbolehkan membuka buku/print-out apapun selain ketentuan.

1. [Nilai 30] Diberikan notasi postfiks berikut : 63947-*+2/ a. Ubahlah menjadi bentuk infiks (rumus matematika). b. Dengan menggunakan pushdown stack hitunglah nilai dari notasi postfiks di atas Jawab : Langkah demi langkah : 63947-*+2/ Karena operator biner maka 2 operan di dekatnya akan terhubung : 6 (3 9) (4 7) * + 2 / Karena * operator biner maka 2 operan di dekatnya akan terhubung : 6 (3 9) * (4 7) + 2 / Karena + operator biner maka 2 operan di dekatnya akan terhubung : 6 + (3 9) * (4 7) 2 / Karena / operator biner maka 2 operan di dekatnya akan terhubung : (6 + (3 9) * (4 7)) / 2 Angka (operan) akan diberlakukan operasi push : 9 3 6 Operator akan mem-pop 2 operan menjadi (3 9) = -6, 2 operan akan dipush : 7 4 -6 6 Operator akan mem-pop 2 operan menjadi (4 7) = -3 akan menjadi : -3 -6 6 Operator * akan mem-pop 2 operan menjadi (-6 * -3) = 18 akan menjadi : 18 6

Operator + akan mem-pop 2 operan menjadi (6 + 18) = 24, 2 dipush ke stack akan menjadi : |2| |24| Operator / mempop 2 operan menjadi (24 / 2) = 12.
2. [Nilai 30] Terdapat sebuah circular link list sebagai berikut.

a. Buatlah TDA (Tipe Data Abstrak) untuk circular link list di atas
b. Penambahan node pada first node (gambarkan prosesnya dan berikan langkah dalam bentuk perintah C++) TDA Circular link list : Instan : Kumpulan informasi berupa karakter huruf kecil Operasi : Buat_node(char x) : membuat node baru dengan informasi karakter x Tambah_elemen_dibelakang() : menambah elemen paling belakang (pointer elemen yang baru menunjuk elemen pertama) Tambah_elemen_didepan() : menambah elemen paling depan (pointernya menunjuk elemen pertama link list) Tampilkan() : menelusuri elemen demi elemen dan menampilkan informasinya. Kelas circular link list di atas dapat diasumsikan sbb : class Node { private : char info; Node * berikut; }; Asumsi lain, pointer Akhir menunjuk elemen berisi informasi e. Ciri dari circular link list : Akhir->berikut = firstNode; Misal informasi karakter w adalah node baru yang akan ditaruh di depan : Perintah membuat node Baru dengan informasi w : Node *baru; Baru->info = w; Langkahnya : Baru->berikut = firstNode; firstNode = baru; Akhir->berikut = firstNode; // penting, merupakan ciri circular link list

3. [Nilai 30] Diberikan class LinkedQueue berikut : template<class T> class LinkedQueue { public: .... LinkedQueue<T>& Add(const T& x); LinkedQueue<T>& Delete(T& x); private: Node<T> *front; // pointer ke node pertama Node<T> *rear; // pointer ke node terakhir };

Lengkapi main function berikut untuk menggabung antrian Q1 dan Q2 menjadi satu yaitu antrian Q1. Catatan : Semua elemen dari antrian Q2 berada pada antrian Q1. void main(void) { LinkedQueue<int> Q1, Q2; int x; try {Q1.Add(1).Add(2).Add(3).Add(4); cout << "No queue add failed" << endl;} catch (NoMem) {cout << "A queue add failed" << endl;} try {Q2.Add(5).Add(6).Add(7); cout << "No queue add failed" << endl;} catch (NoMem) {cout << "A queue add failed" << endl;} // tambahkan perintah C++ untuk menggabung Q2 ke Q1 di bawah ini dengan // menggunakan operasi/ methods yang tersedia // Jawaban : int output; while (Q2.front != NULL) { Q2.delete(output); Q1.Add(output); } } [Nilai 10] Nilai porto folio blog.

You might also like