Sebab aku mempunyai keyakinan yang kokoh dalam Injil, karena Injil adalah kekuatan Allah yang menyelamatkan setiap orang yang percaya. (Roma 1:16)

Rabu Wage, 8 September 2010
Home | Kontak Saya | Eureka! | ArenA | Bimbingan Tugas Akhir | Download | Links
Algoritma & Pemrograman 1 | Algoritma & Pemrograman 2 | Struktur Data | Teknik Kompilasi | Kecerdasan Buatan
KDD & Data Mining | Web Mining | E-Business | Systems Analysis and Design
 
 Search Engine
Manfaatkan Google untuk memperoleh sejumlah informasi yang Anda inginkan dalam hansmichael.com.
 
Kutipan
All Science is Computer Science (New York Times, March 25, 2001)

George Johnson
 
Tokoh Hari Ini
Blaise Pascal

Blaise Pascal lahir pada 19 Juni 1623 di Rouen, Perancis. Ia meninggal dunia pada tahun 1666 di Perancis. Pascal adalah ahli matematika, fisika, penulis prosa, dan dikenal sebagai salah satu filsuf Kristen abad pertengahan. Pascal menemukan mesin penjumlah yang mengatur penambahan carry antar digit dan segitiga Pascal yang memuat koefisien-koefisien deret binomial. Ia juga penemu roda gerobak sampai roda rolet. Pascal juga meletakkan dasar bagi teori modern probabilitas: hukum Pascal untuk Tekanan. Menariknya, walaupun ia ahli dalam berbagai bidang sains, pemikiran religiusnya sebagai filsuf Kristen menekankan doktrin yang lebih mengutamakan pengalaman dengan Tuhan lebih melalui hati daripada melalui nalar.

 
Berita Terakhir

Buat TTS Cuma Tiga Menit

Deskripsi Tugas VIII NLP

Download File Pelengkap Tugas AI

Tugas V - Tagset dan Grammar Bahasa Indonesia

Proyek II Web Mining - Versi 2.0

Proyek II Web Mining - Versi 1.0

Handout Presentasi Kuliah ARM III: Apriori.

Tugas 8 - Assignment Kuliah DM & KDD

Materi Kuliah Algoritma dan Pemrograman 1

Talita, DocSearch, KoranNorak

Materi UTS Data Mining dan KDD

Materi UTS Alpro1 & Web Mining

20 Points Quiz 1 Alpro 1

File-file Deskripsi Tugas

Penyerahan Laporan Assignment 2 Web Mining

Web Mining

Materi UAS Web Mining Semester Genap 2006/2007

Daftar Metode yang TIDAK DAPAT Dipakai

Download File Kuliah Kecerdasan Buatan

Penambahan Soal Algoritma dan Pemrograman 1

Nilai Kuliah Algoritma dan Pemrograman 1 STTS

Pertama, Situs Tanya Jawab Alkitab

Materi UTS Algoritma 1 dan Data Mining-KDD

Turbo Pascal menjadi Software Antik

Rekayasa Perangkat Lunak

Extended Abstract Tugas Akhir

Life is Beautiful?

Eureka! dan Arena

Konfirmasi Materi Proyek II yang Disetujui

Penanganan Trouble Registrasi dan Upload

Download Materi UAS

Materi UAS Struktur Data Genap 2004/2005

Materi UAS Kecerdasan Buatan Genap 2004/2005

Lebih dari 100 Abstrak Tugas Akhir

Deadline Proyek I dan Tugas III

Komponen Penilaian Tugas Akhir

Materi UTS Kecerdasan Buatan Genap 2004/2005

Materi UTS Struktur Data Genap 2004/2005

Proyek Software Assignment I

Kuliah Pengganti

MKP Bernilai 'D' atau 'E' Tidak Perlu Dibatalkan

Workshop IT for Non-IT Executive PLN Jatim

 
 

Struktur Data (IC210)

Contoh Soal

1. Tunjukkan struktur bit yang masing-masing menyusun variabel a dan b pada segmen program Pascal berikut ini: 

VAR 

   a:byte; 

   b:integer; 

 

BEGIN 

   a:=100; 

   b:=-100; 

END.

2. Sebuah bilangan bertipe single precision tersimpan dengan urutan byte 00 00 5B 40. Tentukanlah nilai desimal yang disajikannya.
3. Tulislah dalam dua format notasi ekspresi lainnya:
  1. **+ab+cd

  2. *abc*+defa^^+*

  3. *((((a*x)+b)*x)+c)/x

4. Dengan menggunakan teori ranking, baik ranking ekspresi ataupun proper headnya, periksalah valid tidaknya ekspresi-ekspresi berikut ini:
  1. *abc*+def*+*

  2. *ab+*cd-

  3. *^/ab/cd

5. Tentukan alamatnya (hexadecimal) dalam memory komputer, jika alamat awal adalah L0=3A00 (hexadecimal):
  1. Elemen a[7,8], dari vektor a yang dideklarasikan secara column-major order oleh: VAR a : ARRAY[1..20 , 1..10) OF word;
  2. Elemen b[-10,1], dari vektor b yang dideklarasikan secara row-major order oleh: VAR b : ARRAY[-13..1 , -5..4) OF single;
6. Double Precision floating-point Turbo Basic membutuhkan 8 byte memory dengan struktur:
  • 1 bit sign, 0 untuk positif dan 1 untuk negatif
  • 11 bit exponen (radix), yang dibias dengan +3FF
  • 52 bit mantissa
  • Dua nibble terakhir dibaca terlebih dahulu sebelum nibble pertama. Demikian pula untuk setiap pasangan word (seperti single precision), yaitu word terakhir dibaca dahulu; kemudian untuk setiap pasangan byte, byte terakhir juga dibaca terlebih dahulu. Catatan: 1 Nibble = 2 Word. 

Berapa nilai double precision (dalam desimal) yang ditunjukkan oleh urutan byte berikut:

(00 00 00 00 00 DB A0 0C)16

7. Sebuah stack dapat digunakan untuk mengenali sejumlah pola. Perhatikan pola STRING1#STRING2 dimana (selain yang di tengah sebagai separator) tidak ada lagi pemakaian karakter # untuk string1 dan string2. Selain itu string2 harus merupakan kebalikan (reverse) dari string1. Tulislah:

Function MatchReverse (str : string) : boolean;

{true saat str adalah string yang polanya cocok, dan false bila tidak}

Sebagai contoh, jika str='123&*O#O*&321' atau str='ST#TS', hasilnya akan true, sebaliknya jika str='a2qd#dq3a', hasilnya akan false.

8. Sebuah array 1-dimensi (vektor) dapat digunakan untuk menyimpan dua buah stack (DualStack), yang pertama (Stack 1) penambahan elemennya dari ujung kiri bergerak ke kanan, dan yang lain (Stack 2) dari ujung kanan bergerak ke kiri.

  1. Apakah kondisi yang menyebabkan Stack 1 kosong (empty)? Kapan pula Stack 2 kosong?
  2. Apakah kondisi yang menyebabkan Stack 1 penuh (full)? Kapan pula Stack 2 penuh?
  3. Untuk DualStack yang dideklarasikan dengan:

CONST

   MaxDualStackSize = 100;

TYPE

   StackNo = 1..2;

   InfoType = byte; {user defined data type}

   DualStack = RECORD

                 top1, top2 : word;

                 StackStorage : ARRAY[1..MaxDualStackSize]

                             OF InfoType;

               END;

 

Tulislah 3 (tiga) rutin di bawah ini:

Procedure Initialize(VAR StackName: DualStack);

{untuk inisialisasi DualStack bernama StackName}

 

Procedure Push(VAR StackName: DualStack; No: StackNo; Data: InfoType);

{untuk push Data ke dalam DualStack bernama StackName, nomor No}

 

Function Pop(VAR StackName: DualStack; No: StackNo) : InfoType;

{untuk pop/mendapatkan data dari DualStack bernama StackName, nomor No}

  1. Tulis sebuah program untuk membaca 25 bilangan bulat positif (byte), dan memasukkan seluruh elemen ini ke dalam DualStack, semua yang gasal ke dalam stack 1, dan yang genap ke dalam stack 2, dengan memanfaatkan ketiga subprogram yang telah dibuat pada soal (d).
 9.

Dalam Turbo Basic single precision menggunakan ukuran 4 byte (1 sign bit; 8 exponent bit; 23 mantissa bit), dengan exponen bias 7F (hexadecimal). Tentukan urutan 4 byte hexadecimal dalam memory komputer yang menyajikan single precision -97,75.

10.

Konversikan ekspresi infix berikut menjadi dua notasi lainnya (prefix dan sufix/postfix): 

  1. ((A+B)*C-(D-E))^(F+G)

  2. A*B+(C/(D-E))^(F-G)

 11. Pada declaration part berikut, hitung alamat f[2,0,-1,85,11].e. dalam hexadecimal. Lokasi awal array f telah diketahui pada BA00. Tulis terlebih dahulu rumus umumnya.


TYPE 

   a = RECORD 

          b:boolean; 

          c:char; 

          d:string[5]; 

          e:word; 

       END;

VAR 

   f : ARRAY[1..2, -3..4, -5..6, 78..90, 11..12]

       OF a;

12. Perhatikan declaration part sebuah program Pascal berikut ini:

TYPE

   salesman = RECORD
   KodeSales = string[5];
   NamaSales = string[30];
   Golongan = char;

   GajiPokok = real;
   Tunjangan = real; END;

VAR
   d : ARRAY[-12..5, 5..9] of salesman;

Jika data array tersebut diletakkan pada alamat memori awal L0 = 1500 (desimal), tentukanlah alamat awal field berikut (dalam desimal):

  1. d[0,7].Tunjangan, bila digunakan Row-Major Order.

  2. d[0,9].Golongan, bila digunakan Column-Major Order.

 13.

Tulis procedure Balik_Queue(Q:Queue); yang berguna untuk membalik susunan elemen dalam queue Q dengan menggunakan bantuan sebuah stack S. Diasumsikan procedure dan function untuk operasi berikut sudah disediakan (tinggal dipakai saja), yaitu: 

  • Procedure InsertQueue(data,queue);

  • Procedure DeleteQueue(data,queue);
  • Function EmptyQueue(queue): boolean;
  • Procedure InitStack(stack);
  • Procedure Push(data, stack);
  • Function Pop(stack);
  • Function EmptyStack(stack): boolean;
14. Untuk Circulair Single Linked Linear List berikut ini:

Tulis Procedure DeleteNode(Head:PtrList; X:Infotype; Terhapus: boolean); yang berfungsi untuk menghapus semua node yang berisi info X dalam Circulair Single Linked Linear List yang dialamati oleh variabel Head. Variabel Terhapus akan true jika dan hanya jika list asal tidak empty dan minimal terdapat sebuah X dalam list asal.

15.

Tulislah algoritma atau program Pascal yang recursive untuk:

  1. Mencetak dalam urutan terbalik semua info / data dari sebuah single linked linear list.

  2. Mengubah info dari semua node pada sebuah binary tree integer dengan ketentuan berikut:

Jika info dari sebuah node berisi bilangan genap, maka info ini tidak berubah. Jika info dari sebuah node berisi bilangan gasal, info dikalikan dua.

 16.

Tulislah function Evaluasi_Polinomial(P:Polinomial; X:real) : real; yang berguna untuk mendapatkan nilai sebuah polinomial P dengan harga X yang ditentukan. Sebagai contoh untuk P yang menyajikan polinomial 5x^4-2x^3+10x-100 dan X=2, fungsi ini akan menghasilkan nilai 5*2^4-2*2^3+10*2-100 = 5*16-2*8+10*2-100 = -16. Tulis lebih dahulu deklarasi type linked list untuk menyajikan polinomial.

 17.

Inorder successor biasa digunakan pada procedure untuk penghapusan sebuah node dari sebuah binary search tree. Kali ini perhatikanlah bahwa penghapusan sebuah node dari sebuah binary tree dapat dilakukan dengan memperhatikan (mendapatkan terlebih dahulu) inorder predecessor-nya.

  1. Tulislah fungsi untuk mendapatkan inorder predecessor dari sebuah node dalam sebuah binary search tree.

Bantuan: Input dan Output fungsi ini masing-masing adalah sebuah pointer type Binary Search Tree yang digunakan; sedangkan parameter input adalah pointer ke node n, dimana n^.right menunjuk node yang akan dicari inorder predecessor-nya.

  1. Jelaskan semua kasus yang mungkin terjadi pada procedure penghapusan ini. Jika diperlukan sertakan gambar untuk mempertajam penjelasan anda.

  2. Tulis sebuah procedure recursive melalui algoritma atau program Pascal untuk menghapus sebuah node dari sebuah binary tree dengan menggunakan fungsi pada soal (a) dan memperhatikan semua kasus pada soal (b).

 18.

Gambarkan:

  1. Binary Search Tree yang dihasilkan dari urutan pengisian data berikut: 20, 16, 30, 60, 80, 40, 10, 25, 27, 15, 13, 14, 12, 48, 35, 38

  1. Tuliskan penyajian jawaban (a) dengan menggunakan diagram venn.

  2. Kumpulan poket yang dihasilkan dan kemudian list baru hasil penggabungan poket pada iterasi pertama saja dari pengurutan data berikut dengan menggunakan radix sort: 90, 100, 109, 1, 105, 5, 50, 2, 20, 21, 12, 9, 99, 9, 95

  1. Sparse matriks untuk:

2 4 0 7
0 5 0 0
0 6 0 0
0 1 0 3
  1. General Tree yang disajikan dengan nested parentheses berikut ini: 

    ( 20 ( 30 (70 80 (77 88 (88) 99 77 ) ) 40 (95) 50 11 33) )

  1. Penyajian general tree pada soal (e) dengan menggunakan binary tree.

19.

Binary Increment. Perhatikanlah deklarasi sebuah singly linked linear list berikut ini:

TYPE

   PtrBiner = ^Biner

   biner = RECORD

      bit : 0..1;

      link : PtrBiner;

   END;

Seluruh node linked list menyajikan sebuah bilangan biner b1b2.....bn, dimana bi hanya mungkin berisi 0 atau 1. Jika singly linked linear list bertipe PtrBiner -- yang field 'bit' di dalamnya merupakan rangkaian b1b2.....bn -- digunakan untuk menyajikan sebuah bilangan biner, tulislah sebuah Procedure Increment(VAR BilBiner : PtrBiner); yang berguna untuk menambah satu bilangan biner yang alamatnya ditunjukkan dengan BilBiner. Catatan: Recursive akan sangat membantu.

20.

Shuffle Merge (yang dimodifikasi)

Shuffle-merge dari dua buah list X1, X2, ..... Xn dan Y1, Y2, ..... Ym adalah:

X = X1, Y1, X2, Y2, ..... Xn, Yn, Yn+1, Yn+2, ..... Ym ; jika n<m

atau

X = X1, Y1, X2, Y2, ..... Xm, Ym, Ym+1, Ym+2, ..... Ym ; jika n>m

Tulislah Procedure ShuffleMerge(VAR X : ListType; Y : ListType); untuk melakukan shuffle merge dua buah list yang head nodenya ditunjukkan oleh X dan Y. Namun demikian perhatikan bahwa hasil penggabungan disimpan ke dalam list X. Tidak menjadi masalah apabila isi list Y akan rusak / kosong. Dalam hal ini penggabungan dilakukan dengan menyisipkan elemen-elemen Y1, Y2, ...... ke tempat yang sesuai (antara X1 dan X2, antara X2 dan X3, dan seterusnya), tanpa mengalokasikan sebuah elemenpun dengan perintah New (termasuk tidak diijinkan menggunakan procedure InsertFirstList atau InsertLastList).

21.

Jika semua operasi stack berikut telah disediakan: InitStack(S), Push(S,X), Pop(S); IsStackEmpty(S), IsStackFull(S), tulislah algoritma / pseudo-code untuk menampilkan hasil penjumlahan dua buah "bilangan" bulat positif yang sangat panjang, yang diinput melali keyboard. Bahasa pemrograman pada umumnya sudah tidak dapat melakukannya lagi. Contoh:

637250569987999999786549876342589776543981234567 (Bil1)
              9012348756589129876543212345678999 (Bil2)
------------------------------------------------ +
637250569988009012135306465462466319756326913566 (Hasil)
    
Bil1 dan Bil2 dimasukkan melalui keyboard. Sebenarnya keduanya bukanlah integer, melainkan hanya string yang berisi rangkaian character yang panjang. Pengisian "bilangan" dilakukan sampai tombol enter ditekan. Hasil yang ditampilkan program Anda juga bukan merupakan variabel integer tunggal, melainkan hanyalah tampilan rangkaian karakter, walaupun bila diperiksa merupakan hasil penjumlahan yang tidak salah. Petunjuk: Gunakan 3 stack dan bekerjalah dari kanan ke kiri.
22.

Dengan memanfaatkan sejumlah operasi queue tulis program Pascal untuk memeriksa sebaris karakter yang dimasukkan melalui keyboard. Data input diasumsikan terdiri dari 2 bagian yang dipisahkan oleh sebuah colon (:). Sebagai output, algoritma ini akan mencetak keterangan:

  • 'NO COLON' jika tak ada colon pada data input

  • 'LEFT' jika bagian kiri (sebelum colon) lebih panjang daripada bagian kanan

  • 'RIGHT' jika bagian kiri (sebelum colon) lebih pendek daripada bagian kanan

  • 'SAME' jika bagian kiri dan kanan sama panjangnya

Catatan:

  • Sama atau tidaknya isi bagian kiri dan isi bagian kanan tidak perlu diperiksa.

  • Operasi-operasi dasar queue dianggap telah disediakan, namun demikian tulislah kembali header function/procedure-nya.

Contoh:

Data Input Keterangan yang Dihasilkan
abcdefghijk NO COLON
abcde:pqrst SAME
abcdefg:xyz LEFT
abc:tuvwxyz RIGHT
23. Tulislah deklarasi type pada Pascal untuk implementasi queue dengan menggunakan dynamic allocation memory (pointer). Type datanya adalah record mahasiswa yang terdiri dari dua field, yaitu Nama (string[30]) dan NRP (string[8]). Dengan menggunakan deklarasi tersebut tulis Function Size (Q:Queue):LongInt; yang berguna untuk mendapatkan jumlah elemen queue.
24.

Pools untuk Garbage Memory Management. Bila sebuah vektor yang menyajikan singly linked linear list L telah berisi data-data berikut:

Index  Data Link
1 John 0
2 Timothy 4
3 Paul 2
4 James 6
5 Matthew  3
6 Luke 1

First=5, Pools=0, MaxSize=6

Tulislah:

  1. PROCEDURE insert(X,Pred,L,Ok,): untuk menyisipkan X setelah data pada alamat fisik Pred dari list L, Ok=TRUE jika operasi berhasil dilakukan.

  2. PROCEDURE delete(Pred,L,Ok): untuk menghapus data dari list L yang alamatnya ditunjukkan oleh Pred, Ok=TRUE jika operasi berhasil dilakukan.

Gambarlah penyajian list dalam bentuk diagram:

  1. untuk tabel di atas.

  2. keadaan tabel di atas, setelah urutan proses: delete(5,L,Ok); delete(2,L,Ok); insert('Titus',1,L,Ok); delete(4,L,Ok); jika metode yang dipakai adalah pembentukan pools segera setelah sebuah elemen dihapus.

25.

Generalized List

TYPE

   ListPointer = ^ListNode;

   ListNode = RECORD

      link : ListPointer;

      CASE tag : BOOLEAN OF

          FALSE : (data : CHAR);

          TRUE : (dlink: ListPointer);

      END;

Perhatikan bahwa deklarasi di atas memungkinkan untuk menyajikan sebuah generalized list. Kemudian perhatikanlah function berikut ini:

FUNCTION mystery(p : ListPointer) : ListPointer;

VAR

   q : ListPointer;

BEGIN

   q := NIL;

   IF p <> NIL THEN

   BEGIN

      new(q);

      q^.tag := p^.tag;

      IF NOT p^.tag 

         THEN q^.data := p^.data

         ELSE q^.dlink := mystery(p^.dlink);

      q^.link := mystery(p^.link);

   END;

   mystery := q;

END; {of mystery}

Apakah tujuan function mystery di atas? Jelaskan dengan singkat.

26. Perhatikan "silsilah keluarga" Raden Bagus Sastro di bawah ini:
  • Sastro mempunyai anak Budi, Wati, Susi dan Amir

  • Susi mempunyai anak Tejo dan Hasan

  • Amir mempunyai anak Didi dan Andi

  • Wati mempunyai anak Maria

  • Maria mempunyai anak Tedy

  • Didi mempunyai anak Linda dan Wahjuni

  • Tejo mempunyai anak Wijaya, Rosalina dan Sugiharto

  1. Gambarlah terlebih dahulu General Tree yang menyajikan silsilah keluarga di atas.

  2. Gambarlah Binary Tree yang menyajikan general tree di atas.

  3. Tunjukkan urutan node yang dikunjungi, jika pada Binary Tree tersebut dilakukan traversal secara: Inorder, Preorder dan Postorder.

27.
  1. Gambarlah general tree yang menyajikan ekspresi aritmatika berikut: (a + b + c)*e - f(g,h,i,j) + k / log(m) ^ n
  2. Gambarlah tiga buah linked list, yang masing-masing adalah keadaan ketika pass ke-1, ke-2, dan ke-3 berakhir untuk pengurutan data berikut dengan Radix Sort: 909, 78, 89, 79, 9, 7, 97, 87, 777, 77, 99, 98, 798, 897, 888. Anda tidak perlu memperhatikan ataupun menggambar susunan pocketnya.

  3. Gambarlah Binary Search Tree yang dibentuk dengan mengisikan bilangan berikut secara urut: 50, 46, 43, 80, 90, 75, 49, 48, 77, 76

  4. Sajikan tree pada soal (c) dengan Nested Parentheses (Kurung Bersarang).

  5. Sajikan tree pada soal (c) dengan Diagram Venn.

28.

Breadth First Search (BFS) adalah salah satu traversal pada Binary Tree, yang dilakukan dengan melakukan penelusuran tree mulai dari level 1 (root) sampai ke level terbawah, dimana dalam setiap level melakukan penelusuran mulai dari node kiri ke node kanan. Kunci: penyelesaian BFS adalah penggunaan struktur data Queue.

Bila rutin operasi queue berikut sudah disediakan (tinggal dipakai saja), yaitu:

  • Procedure InsertQueue(data,queue);
  • Procedure DeleteQueue(data,queue);
  • Function EmptyQueue(queue): boolean ;

Tulislah procedure BFS(BTree); yang berguna untuk melakukan kunjungan -- dan sekaligus mencetak isi informasi setiap node yang dikunjungi ke layar komputer -- terhadap seluruh node dalam binary tree BTree secara BFS.

29. Threaded Binary Search Tree. Pada sebuah Threaded Binary Search Tree, berturut-turut akan diisikan data berikut:

28, 45, 87, 20, 14, 40, 46, 91, 22, 29

Gambarlah diagram pohon setelah pengisian data di atas selesai dilakukan. Perhatikan bahwa jika biasanya digunakan lingkaran kecil untuk menunjukkan sebuah node, untuk jawaban soal ini, gantikan dengan bentuk kotak kecil, yang field-fieldnya terbagi seperti gambar ini:

LPtr LFlag Info RFlag RPtr

LFlag dan RFlag adalah boolean, yang jika TRUE=Thread Link dan jika FALSE=Structural Link. Pada gambar anda, seluruh garis dengan mata panah keluar dari LPtr dan RPtr; sedangkan LFlag, Info, dan RFlag harus diganti dengan nilai-nilai boolean (T/F) dan numerik, sesuai dengan data yang diisikan.

30. Recursive Delete pada Binary Search Tree. Pada sebuah Binary Search Tree, berturut-turut akan diisikan data berikut: 50, 78, 22, 17, 38, 35, 43, 25, 33, 30, 27, 29, 28, 37, 32

Gambarlah diagram pohon sebelum penghapusan dilakukan (Hati-hati. Jika salah, semua jawaban untuk soal berikut juga akan salah). Jika penghapusan dilakukan untuk node yang berisi 22, hitunglah:

  1. Berapa kali pemanggilan Procedure Delete (recursive) dilakukan? Hati-hati dalam menjawabnya, hitung baik-baik, dan pemanggilan procedure dari program / algoritma utama tidak dihitung.
  2. Berapa kali segmen program/algoritma pencarian successive inorder dari suatu node dilakukan? Dan node mana (sebutkan isi infonya) saja yang mencari successive inordernya?
  3. Berapa kali penggantian isi field info dilakukan? Sebutkan pasangan-pasangan info dari node yang diganti dan node penggantinya.
31. Manipulasi Binary Tree. Perhatikan definisi tipe data untuk binary tree yang ditulis melalui Pascal berikut ini:

TYPE

   DataType = Word;

   Tree = ^Node;

   Node = RECORD

            Info : DataType;

            Left, Right : Tree;

          END;

Tulislah program Pascal atau sub algoritma fungsi untuk:

  1. Memeriksa apakah pointer Ptr menunjuk kepada suatu node leaf. (Jika Leaf=True). FUNCTION IsLeaf(Ptr: Tree): Boolean;
  2. Menghitung nilai total jumlah field Info dari semua node pada sebuah binary tree Root. FUNCTION Sum(Root: Tree): LongInt;
  3. Memeriksa apakah binary tree Root adalah complete binary tree. (Jika Complete=True). FUNCTION IsComplete(Root: Tree): Boolean;
32. Manipulasi Binary Tree II. Tulislah algoritma / program Pascal atau algoritma untuk menghapus semua node leaf pada binary tree Root. Harus menggunakan Function IsLeaf (soal 31.a). Pakailah definisi tipe data seperti soal nomor 31.

FUNCTION DeleteAllLeaf(VAR Root : Tree);

33. Analisis Algoritma Radix Sort Versi "Pandai".  Jawablah dengan singkat:
  1. Pada algoritma Radix Sort versi "Pandai" untuk proses sorting 1000 node linked list dengan kapasitas sebuah node sebesar 8 byte, dan sorting akan dilakukan sebanyak 5 pass, berapakah ukuran memory ekstra yang dibutuhkan? Jelaskan jawaban Anda.

  2. Jelaskan secara detil proses berpindahnya sebuah node linked list ke dalam pocket yang sesuai pada sorting Radix Sort versi "Pandai". Lengkapi jawaban Anda dengan potongan pseudo code/program, kemudian hubungkan dengan contoh gambar linked list yang salah satu nodenya akan dipindah ke dalam pocket. Gambar linked listnya terserah Anda.

34. Untuk sebuah node pada contoh binary search tree (BST) di bawah ini anggaplah field-fieldnya adalah Data, Left, dan Right.

  1. Tulislah algoritma PROCEDURE Double(Root) untuk menggandakan seluruh node dalam sebuah binary search tree. Sebagai contoh untuk tree di atas elemen-elemennnya akan berubah menjadi 90, 64, 112, 76, dan seterusnya.
  2. Tulislah algoritma PROCEDURE ReverseBFS(Root) untuk mencetak semua data pada tree secara "Reverse Breadth-First Traversing" yaitu mulai ujung kanan level tree terakhir sampai root, sehingga data yang dicetak untuk tree di atas adalah: 54, 46, 78, 49, 38, 56, 32, 45. Petunjuk: Gunakan queue dan stack bertipe pointer. Anggaplah rutin-rutin berikut telah tersedia: InitQueue(Q), Insert(Q,X), Delete(Q), IsQueueEmpty(Q), InitStack(S), Push(S,X), dan Pop(S).
  3. Mereferensi procedure delete sebuah node dari BST seperti dijelaskan melalui handout, gambarlah ulang tree di atas, kemudian tunjukkan dengan sejumlah panah untuk arah pointer p, q, rp, s, f, tepat ketika data pada root (45) akan dihapus.
Home | Kontak Saya | Eureka! | ArenA | Bimbingan Tugas Akhir | Download | Links
Algoritma & Pemrograman 1 | Algoritma & Pemrograman 2 | Struktur Data | Teknik Kompilasi | Kecerdasan Buatan
KDD & Data Mining | Web Mining | E-Business | Systems Analysis and Design

Copyright (C) December 2004, October 2007, www.hansmichael.com