167
2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Team Dosen http://www.mercubuana.ac.id MODUL PERKULIAHAN Algoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi 01 87007 Team Dosen Abstract Kompetensi

etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

  • Upload
    others

  • View
    3

  • Download
    1

Embed Size (px)

Citation preview

Page 1: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

01 87007 Team Dosen

Abstract Kompetensi

Page 2: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Tipe-tipe data dan deklarasi data dalam bahasa pemrograman

Memahami jenis-jenis data yang digunakan dalam algoritma

Page 3: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Pengenalan Algoritma Pemrograman

dan Struktur Data

1. Pendahuluan

Instruksi harus diberikan kepada komputer agar dapat memecahkan suatu masalah.

Langkah-langkah yang dilakukan untuk memberikan instruksi kepada komputer untuk

memecahkan masalah inilah yang dinamakan pemrograman komputer. Pemrograman komputer

bukanlah hal yang sederhana. Kegiatan ini memerlukan ketelitian dan kemauan untuk bekerja

dalam jangka waktu yang lama.

Dalam komunikasi sehari-hari seorang harus berbicara dalam bahasa yang sama

dengan orang tersebut. Hal ini berlaku juga untuk berkomunikasi dengan komputer. Kita harus

menggunakan bahasa yang dimengerti oleh komputer untuk memberikan suatu instruksi. Pada

dasarnya komputer adalah sebuah mesin digital, artinya komputer hanya mengenal kondisi

adanya arus (dilambangkan sebagai angka 1) atau tiadanya arus (dilambangkan sebagai angka

0). Dengan kata lain sandi 1 dan 0 harus digunakan untuk melakukan pemrograman. Sandi

tersebut dikenal sebagai bahasa mesin. Kita dapat membayangkan bagaimana sulitnya

menggunakan bahasa mesin sebagai bahasa pemrograman..

Karena bahasa mesin sangat sulit maka muncul ide untuk melambangkan untaian sandi

1 dan 0 dengan singkatan kata yang mudah dipahami manusia. Sebagai contoh dalam

prosesor Intel terdapat perintah 0011 1010 0000 1011. Perintah dalam bahasa mesin ini artinya

sama dengan perintah assembly CMP AL, 0D yang artinya bandingkan nilai register AL dengan

0D. CMP sebenarnya adalah singkatan dari compare. Dapat dilihat disini bahwa perintah

tersebut lebih mudah dipahami dibandingkan dengan urut-urutan bilangan biner seperti tersebut

diatas.

Pemrograman dengan bahasa assembly untuk banyak orang masih dirasakan terlalu

sulit. Karena hal tersebut akhirnya dikembangkan suatu bahasa pemrograman yang lebih yang

lebih mudah digunakan. Bahasa pemrograman ini menggunakan bahasa generasi ketiga atau

disingkat 3GL, biasa juga disebut sebagai high-level language. Contoh dari bahasa ini adalah

bahasa Basic, Pascal, C, C++, COBOL, dsb.

Page 4: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Bahasa generasi ketiga biasanya menggunakan kata-kata dalam bahasa Inggris karena

bahasa Inggris merupakan bahasa internasional. Sebagai contoh anda dapat menuliskan

perintah berikut dalam bahasa Pascal . Sebagai contoh :

writeln (‘Hallo’); {Pascal}

printf (“Hallo”); // C++

cout << “Hallo” << endl; // C

2. Algoritma

Algoritma adalah urutan langkah berhingga untuk memecahkan masalah logika atau

matematika. Dalam kehidupan sehari-hari sebenarnya kita juga menggunakan algoritma untuk

melakukan sesuatu. Sebagai contoh untuk menulis surat diperlukan langkah-langkah sebagai

berikut :

1. Mempersiapkan kertas dan amplop

2. Mempersiapkan alat tulis

3. Mulai menulis.

4. Memasukkan kertas ke dalam amplop.

5. Pergi ke kantor pos untuk mengeposkan surat tersebut.

Langkah-langkah dari nomor 1 sampai dengan nomor 5 di atas itulah yang disebut dengan

algoritma. Jadi sebenarnya kita menggunakan algoritma baik dengan sadar maupun tanpa kita

sadar.

Dalam banyak kasus, algoritma yang dilakukan tidak selalu berutan seperti diatas.

Kadang-kadang harus memilih dua atau beberapa pilihan. Sebagai contoh jika kita ingin makan,

kita harus menentukan akan memasak sendiri atau dirumah makan. Jika kita memilih untuk

makan dirumah makan kita akan menjalankan algoritma yang berbeda jika kita ingin memasak

sendiri. Didalam pemrograman hal tersebut dikenal sebagai percabangan.

Dalam kasus lain lagi mungkin kita harus melakukan langkah-langkah tertentu beberapa

kali Sebagai contoh, saat kita menulis surat, sebelum memasukkan kertas ke dalam amplop,

mungkin kita harus memeriksa apakah surat tersebut sudah benar atau belum. Jika belum

benar berarti kita harus menyisihkan kertas baru untuk memperbaiki surat tersebut. Demikian

seterusnya sampai surat yang dibuat sesuai dengan yang diharapkan. Hal seperti ini disebut

sebagai pengulangan.

Misalkan kita ingin menghitung luas lingkaran dari masukan berupa jari-jari lingkaran

Rumus luas lingkaran adalah :

Page 5: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Luas = πR2

Maka algoritma untuk menghitung luas lingkaran adalah :

1. Masukkan R

2. Pi = 3.14

3. Luas = Pi * R * R

4. Tulis Luas

Perhatikanlah bahwa tanda = berarti merupakan pemberian nilai kepada variabel-variable yang

berada disebelah kiri. Sebagai contoh untuk baris kedua, nilai 3.14 diberikan pada variable Pi.

Berikutnya nilai Pi * R * R diberikan kepada variabel Luas.

Baris pertama dari algoritma diatas meminta masukkan dari pengguna berupa jari-jari

disimpan pada variabel

2 atau yang

dituliskan Pi * R * R. Luas lingkaran ini disimpan pada variabel Luas. Baris terakhir menuliskan

luas lingkaran tersebut.

Urut-urutan atau sequence adalah rangkaian tindakan yang dilakukan secara berurut.

Contoh algoritma yang diperlihatkan diatas menunjukkan program yang berurut. Untuk

memudahkan memahami algoritma, diagram alur atau flow hart akan sangat membantu.

Contoh dari diagram dari proses pencarian nilai lingkaran tersebut terdapat pada gambar 1.

Mulai

Selesai

Masukkan r

π = 3.14

Luas = π * r * r

Tulis Luas

Page 6: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Gambar 1. Algoritma Perhitungan Luas Lingkaran

Komponen-komponen pada Flow Chart

Oval melambangkan Terminal, untuk menyatakan awal

(Start) dan akhir (end,) hanya sebagai tanda, tidak melakukan

suatu pekerjaan khusus.

Persegi Panjang melambangkan Process,

untuk menyatakan assignment statement

Jajaran genjang melambangkan I/O, Input/Output operation.

untuk menyatakan proses baca (READ)dan proses tulis (WRITE)

Belah Ketupat mengambarkan Decision, untuk menyatakan pengambilan keputusan sesuai dengan suatu kondisi.

Digunakan untuk menggambarkan control statement.

Garis, untuk menyatakan urutan pelaksanaan, atau

alur proses.

Preparation, Pemberian nilai awal suatu variabel.

Biasa dipakai pada bahasa COBOL, juga bahasa C.

Call , Memanggil suatu subprogram (procedure, atau function)

Lingkaran melambangkan Titik connector atau sambungan

yang berada pada halaman yang sama

Page 7: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Pseudocode adalah penulisan program dengan menggunakan bahasa yang kita pergunakan

sehari hari. Bahasa yang digunakan bisa saja bahasa Indonesia, Bahasa Inggris, C-like,

Pascal-like ataupun bentuk bentuk yang lainnya. Contoh pseuducocde dari algoritma diatas

adalah :

Program : Menghitung Luas Lingkaran

Mulai

Masukkan nilai jari-jari kedalam variabel R

Masukkan 3.14 kedalam variabel Pi

Masukkan hasil perkalian Pi dengan R kuadrat kedalam variabel Luas

Tampilkan nilai variabel luas

Selesai

Apapun bentuk tampilan algoritma anda yang terpenting adalah logika dari program yang anda

buat.

3. Struktur Data

Struktur data adalah sebuah skema organisasi, seperti struktur dan array, yang diterapkan

pada data sehingga data dapat diinterprestasikan dan sehingga operasi-operasi spesifik dapat

dilaksanakan pada data tersebut.

Secara umum jenis-jenis data dapat dikelompokkan atas 2 bagian, yaitu :

1. Jenis data primitif, terdiri atas :

a. Integer

b. Real

c. Boolean

d. Karakter

2. Jenis data campuran, yaitu : "String".

3.1 Bilangan Bulat atau Integer

Suatu integer adalah anggota dari himpunan bilangan :

Titik connector yang berada pada halaman lain.

Page 8: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

( ....., -(n+1), -n, ....., -2, -1, 0, 1, 2, ....., n, n+1, ..... )

Operasi-operasi dasar yang ada dalam integer antara lain :

Penjumlahan

Pengurangan

Perkalian

Pembagian

Perpangkatan, dsb

Masing-masing operator pada operasi di atas, yang bekerja terhadap sepasang integer

(operand) disebut sebagai : "binary operator". Sedangkan operator yang hanya bekerja

terhadap satu operand saja disebut sebagai "unary operator". Contoh dari unary

operator adalah operator negasi. Operator ini berfungsi untuk mengubah tanda suatu

operand.

3.2 Bilangan Pecahan atau Real atau Float

Data numerik yang bukan termasuk integer, digolongkan dalam jenis data real. Jenis

data ini ditulis menggunakan titik desimal (atau koma desimal). Bilangan real dimasukkan ke

dalam memori komputer memakai sistem floating point, merupakan versi yang disebut Scientific

Notation. Disini penyajiannya terdiri atas dua bagian, yaitu : mantissa (pecahan) & eksponen.

Contoh :

Di dalam sistim desimal, 123000 = 0.123 * 106.

Di sini 0.123 adalah mantissa atau pecahan, sedangkan 6 adalah eksponennya.

Secara umum suatu bilangan real X dituliskan M * RE

3.3 Boolean

Jenis data ini disebut juga jenis data "logical". Elemen dari jenis data ini mempunyai

nilai salah satu dari "true" atau "false". Operator-operator yang dikenal pada jenis data ini terdiri

atas:

A. Operator Logika, yaitu : NOT, AND dan OR.

Operator OR akan menghasilkan nilai "true", jika salah satu atau kedua operand bernilai

"true".

Operator AND akan menghasilkan nilai "true", jika kedua operand bernilai

"true".Sedangkan operator NOT akan menghasilkan nilai "true", jika operand bernilai

Page 9: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

"false", dan sebaliknya.

Operator NOT merupakan "precedence" dari operator AND dan OR.

Dalam suatu ekspresi yang tidak menggunakan tanda kurung, operator NOT harus dievaluasi

sebelum operator AND dan OR.

B.Operator Relasional, yaitu : >, <, >=, <=, <> dan =.

3.4 Karakter dan String

Jenis data karakter merupakan elemen dari suatu himpunan yang terdiri atas bilangan,

abjad dan simbol-simbol khusus. Sedangkan jenis data string merupakan jenis data campuran,

karena elemen-elemennya dibentuk dari karakter-karakter di atas. Karakter yang digunakan

untuk membentuk suatu string disebut sebagai alphabet. Dalam penulisannya, suatu string

berada dalam tanda "aphosthrope".

Contoh :

Misal, diberikan himpunan alphabet A = { C, D, 1 }.

String-string yang dapat dibentuk dari alphabet di atas antara lain adalah :

'CD1', 'CDD', 'DDC', 'CDC1', ...dsb, termasuk "null string" atau "empty string".

Himpunan yang anggotanya adalah semua string yang dapat dibentuk dari suatu

himpunan alphabet disebut sebagai "vocabulary". Suatu vocabulary V yang dihasilkan dari

himpunan alphabet A dinotasikan dengan VA atau A*.

Jika suatu string dibentuk dari alphabet { 0, 1 }, maka string yang terbentuk disebut

dengan "Bit String".

Secara umum, suatu string S yang dibentuk dari himpunan alphabet A, dituliskan :

S = 'a1a2 ..... aN'

di mana setiap karakter ai anggota A untuk, 1 £ i £ N.

Dalam suatu string terdapat 3 operasi utama, yaitu :

1. Length

2. Concatenation

3. Substring

Latihan:

Page 10: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

1. Buat Algoritma Untuk menghitung nilai Jajarang genjang dan Segitiga, buat algoritma

tersebut dalam bentuk flow chart dan juga dalam bentuk Pseudo code.

2. Buat program dalam bahasa C++ untuk menampilkan Operasi Aritmatika, Operasi

Relasional, Operasi Logika, Operasi Bitwise dan Operasi Geser Bit

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung, 2006

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta,

2004

Page 11: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

02 87007 Team Dosen

Abstract Kompetensi

Pengertian Array, Jenis Array, dan Mengerti dan Menjelaskan apa yang

Page 12: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Algoritma untuk mengakses Array. Pengertian Record dan Penggunaan Structure pada bahasa C++

dimaksud dengan Array dan Record serta Pendeklarasiannya dalam bahasa Pemrograman

Page 13: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Array dan Record

2. Pendahuluan

Pada pertemuan kali ini, kita akan kembali membahas materi yang sudah diberikan di

algoritma dan pemrograman, yaitu array. Secara singkat, array adalah suatu tipe data

terstruktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan

diberi suatu nama tertentu. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.

Array adalah bagian dari struktur data, sedangkan dalam prosesnya penggunaan array, kita

memerlukan algoritma dan pemrograman yang baik.

Dalam kehidupan sehari-hari, kita seringkali bertemu dengan kebutuhan penyimpanan

data sejenis yang dalam jumlah atau kuantitas banyak. Sebagai contoh sederhana, kita akan

mencatat nilai suhu ruangan setiap hari selama 1 tahun. Tentunya kita akan membutuhkan

sebuah data untuk menyimpan data suhu tersebut. Mengingat dalam 1 tahun ada 12 bulan dan

tiap minggu ada 7 hari, maka yang kita butuhkan adalah variabel dengan tipe data terstruktur

seperti array. Dan tidak mungkin kita menggunakan variabel tunggal sebanyak 366 buah.

2. Array

Array adalah suatu set dari alokasi data, dengan jenis data yang sama untuk tiap alokasi

tersebut. Setiap alokasi data disebut sebagai elemen dari array. Untuk mendeklarasikan

sebuah array, tuliskan jenis data dalam array tersebut, nama array dan diikuti dengan subscript.

Subscript disini adalah menyatakan jumlah elemen array yang dituliskan di dalam kurung siku.

Contohnya : int IntArray[25];

Sebagai deklarasi sebuah array yang memiliki 25 alokasi data (elemen) dengan jenis

data integer bernama IntArray. Perbedaan deklarasi variabel array dengan variabel biasa.

int a; //* hanya 1 nilai untuk variabel a

int a[10]; //* terdapat 10 slot nilai untuk variabel a

int a[7] = {1,2,3,5,43,5,6};

Array dapat menggunakan nama apapun (yang dapat digunakan dalam bahasa C/C++),

selama tidak memiliki nama yang sama dengan variabel tunggal lain. Dalam bahasa C/C++,

array dimulai dari 0. Jika A merupakan array dengan jumlah elemen 10, maka variabelnya

Page 14: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

adalah A[0], A[1], ..., A[9]

5 9 15 8 -7 21 0 -3 11 -1 → Isi Array

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] → indeks Array

A[0] bernilai 5

A[4] bernilai -7

Berapa nilai A[6] ?

Berapa nilai A[9] ?

Contoh lain.

6. int angka[10];

mendeklarasikan sebuah variable bernama angka berupa array satu dimensi

untuk menampung/ menyimpan sepuluh data bertipe integer.

1 3 2 4 5 7 8 6 9 10

Indeks = 0 1 2 3 4 5 6 7 8 9

7. float bilangan[4][4];

mendeklarasikan sebuah variable bernama bilangan berupa array dua dimensi

untuk menampung/ menyimpan enam belas data bertipe float.

Kolom = 0 Kolom = 1 Kolom = 2 Kolom = 3

Baris = 0 1.2 2.3 3.4 4.5

Baris = 1 1.3 1.4 1.5 1.8

Baris = 2 2.2 2.2 2.9 2.8

Baris = 3 3.0 3.7 3.5 3.6

3.char huruf[3][5][5];

mendeklarasikan sebuah variable bernama huruf berupa array tiga dimensi untuk

menampung/ menyimpan tujuh puluh lima data bertipe char.

Page 15: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

2.1 Mengisi Nilai Elemen Array

Mengisi nilai pada elemen array dapat dilakukan dengan 2 cara, yaitu :

5. langsung dari program (statik)

6. diisi oleh user melalui input dari keyboard (dinamik)

Berikut contoh pengisian array yang diinput langsung dari program (statik). Artinya user tidak

dapat merubah isi elemen array kecuali merubah dari kode programnya.

A[0] = 100; /*Nilai elemen A[0] adalah 100*/

B[5] = 35; /*Nilai elemen B[5] adalah 35 */

A[0] = B[5]; /*Nilai elemen A[0] adalah 35 */

C = -99; /*C adalah variabel biasa, bukan array. C bernilai -99 */

B[5] = C; /*Nilai elemen B[5] adalah -99. A[0] tetap bernilai 35 */

Berikut algoritma menampilkan elemen nilai array.

Deklarasi

int A[3];

int B = 35;

Deskripsi

Mulai

A[0] = 70;

A[1] = B;

Print “Isi nilai A[0] adalah A[0]”;

w e t u r

o u h h k

d f h k l

a c v b n

m z x r d

T = 0

T = 1

T = 2

Page 16: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Print “Isi nilai A[1] adalah A[1]”;

Print “Silakan user mengisi nilai A[2]:”

Scan A[2];

Print “Isi nilai A[2] adalah A[2]”;

Selesai

Tampilan hasil yang diharapkan adalah sebagai berikut:

2.2 Inisialisasi Array

Meskipun tidak dimungkinkan mengoperasikan array secara langsung, namun pemberian nilai

dapat dilakukan.

int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

Bila initializers-nya lebih sedikit dari elements array, sisanya akan dianggap bernilai 0.

int a[10] = {0, 1, 2, 3, 4, 5, 6};

maka nilai a[7], a[8], dan a[9] dianggap 0.

Bila terdapat initializer, maka dimensi array dapat diabaikan.

int b[] = {10, 11, 12, 13, 14};

b merupakan array yang memiliki 5 elemen karena di-inisialisasi dengan 5 angka. Perhatikan

bahwa variable b dinyatakan sebagai b[] untuk menjelaskan bahwa b adalah sebuah array.

Jika elemen array adalah karakter, maka initializer dapat berupa string constant:

char s1[7] = "Hello,";

char s2[10] = "there,";

char s3[] = "world!";

Untuk memberikan nilai atau mengoperasikan suatu array, dapat digunakan sebuah loop:

for(int i = 0; i < 10; i = i + 1)

{ a[i] = 0; }

Page 17: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

/* a[0] hingga a[9] bernilai 0 */

for(i = 0; i < 10; i++) /* i++ adalah sama dengan i=i+1 */

{ b[i] = a[i]+1; }

/* b[0] hingga b[9] bernilai 1 */

for(i = 0; i < 10; i++)

{ c[i] = b[i]+i; }

/* untuk i=0 → c[0]=1+0=1,

untuk i=1 → c[1]=1+1=2,

untuk i=2 → c[2]=1+2=3,

berapa nilai c[9]? */

Berikut contoh notasi algoritma deklarasi array dengan memanfaatkan proses iterasi (loop).

Deskripsi

int n[10]

Deklarasi

Mulai

for (int i=0; i<10; i++)

n[i] = 0

Print ”Indeks Elemen Nilai”

for (i=0; i<10; i++)

Print “i” ”n[i]”

Selesai

Tampilan hasil keluaran yang diharapkan:

Page 18: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

3. Record

Array sangat seringkali digunakan bersamaan dengan struktur data lain, yaitu record (rekaman).

Deklarasi

typedef struct SISWA

long NIM;

char Nama[25];

char Kota[30];

// deklarasi array A berisi 2 record SISWA;

Deskripsi

//menerima masukan user

for (int i=0;i<2;i++){

Print "NIM: "; Scan A[i].NIM;

Print "Nama: ";Scan A[i].Nama;

Print "Kota: ";Scan A[i].Kota;

//menampilkan isi

for (int i=0;i<2;i++){

Print "Siswa ke-i ";

Print A[i].Nama "("A[i].NIM")";

Print "dari "A[i].Kota";

Selesai

Page 19: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

4. Latihan

Buatlah kode program di bawah ini dengan menggunakan bahasa pemrograman C++. Lalu

kompilasi program tersebut, jalankan. Apakah program tersebut sesuai dengan permasalahan

yang ada?

/* Program untuk mengevaluasi beberapa data nilai */

#include “stdio.h”

int data[10]; //* deklarasi variable global. Sebuah array berisi 10 elemen int

int baik=0, cukup=0, kurang=0;

void input_data( )

{

for( int I = 0; I < 9; I++)

{

printf(“Data ke [ %d ] = “, I); scanf(“%d”, data[I]);

}

return;

};

void cari_rata2( )

{

for( int I = 0; I < 9; I++)

{

if (data[I] > 80 && data[I] <= 100) baik++;

elseif (data[I] > 60 && data[I] <= 80) cukup++;

elseif (data[I] > 0 && data[I] <= 60) kurang++;

}

return;

};

void output_data( )

{

if ((baik >= cukup) && (baik >=kurang))

printf(“\n Rata-ratanya Baik”);

elseif ((cukup >= baik) && (cukup >=kurang))

printf(“\n Rata-ratanya Cukup”);

Page 20: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

elseif ((kurang >= cukup) && (kurang >= baik))

printf(“\n Rata-ratanya Kurang”);

return;

};

main( )

{

input_data( );

cari_rata2( );

output_data( );

}

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Deitel & Deitel, C How to Program 3rd Edition, Prentice Hall, New Jersey, 2001

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung, 2006.

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta,

2004

Page 21: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

03 Team Dosen

Abstract Kompetensi

Page 22: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Pengertian Linked List dan Penyajian Linked List dalam memori

Mampu Memahami dan Menjelaskan Cara Kerja Linked List

Page 23: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Linked List

3. Pendahuluan

Linked List adalah suatu cara untuk menyimpan data dengan struktur sehingga

programmer dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data

kapan saja diperlukan. Secara rinci, programmer dapat menulis suatu struct atau definisi kelas

yang berisi variabel yang memegang informasi yang ada di di dalamnya, dan mempunyai suatu

pointer yang menunjukan ke suatu struct sesuai dengan tipe datanya.

Struktur dinamis ini mempunyai beberapa keuntungan dibandingkan struktur array yang

bersifat statis. Struktur linked list lebih dinamis, karena banyaknya elemen dengan mudah

ditambah atau dikurangi, berbeda dengan arrayb yang ukuranya bersifat tetap. Disamping itu,

manipulasi terhadap setiap elemen seperti menyisipkan, menghapus, maupun menambah

dapat dilakukan dengan lebih mudah.

Untuk lebih memahami konsep linked list perhatikan permasalahan berikut ini:

Misalkan anda diminta untuk membuat sebuah algoritma dan program untuk

memasukan 2 buah daftar ke dalam suatu daftar atau senarai (linked list), dimana senarai

tersebut masih kosong, sehingga setelah anda masukan 2 buah data tersebut, senarai tersebut

berisi 2 buah data.

Algoritma dari permasalahan diatas adalah sebagai berikut:

8. Tentukan struktur untuk menampung data yang dimasukan

9. Senarai masih keadaan kosong

10. Tentukan fungsi untuk memasukan data ke dalam senarai

11. Fungsi untuk memasukan data ke dalam senarai adalah:

if (p==nul){

t → next = *s

*s = t }

12. masukan data tersebut ke dalam senarai

13. tampilkan data

14. selesai

Implementasi dari algoritma diatas pada program C++ adalah sebagai berikut :

Page 24: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

/*Program:link1.cpp */ #include <stdio.h> #include <stdlib.h> #include <malloc.h>

typedef struct nod { int data; struct nod *next; } NOD, *NODPTR;

void CiptaSenarai (NODPTR *s) { *s = NULL; }

NODPTR NodBaru(int m) { NODPTR n; n = (NODPTR) malloc(sizeof(NOD)); if (n != NULL) { n -> data = m; n -> next = NULL; } return n; }

void SisipSenarai (NODPTR *s, NODPTR t, NODPTR p) { if (p==NULL) { t -> next = *s; *s = t; } else { t -> next = p -> next; p -> next = t; } }

void CetakSenarai (NODPTR s) { NODPTR ps; for (ps = s; ps != NULL; ps = ps -> next) printf("%d --->", ps -> data); printf("NULL\n"); }

int main () { NODPTR pel; NODPTR n;

CiptaSenarai(&pel);

Page 25: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

n = NodBaru(55); SisipSenarai(&pel, n, NULL); n = NodBaru(75); SisipSenarai(&pel, n, NULL); CetakSenarai(pel); return 0; }

2. Teknik-teknik Dalam Linked List

Teknik-teknik yang ada pada linked list antara lain:

1. Pengulangan linked list

2. Mengubah sebuah Pointer dengan referensi Pointer

3. Membuat kepala senarai dengan perintah push()

4. Menambah Ekor pada akhir senarai

5. Membuat referensi lokal

2.1. Pengulangan linked list

Teknik yang sering dalam linked list adalah pengulangan keseluruhan node dalam list.

Secara umum pengulangan ini dikenal sebagai while loop. Head pointer dikopikan dalam

variabel lokal current yang kemudian dilakukan perulangan dalam linked list. Hasil akhir

dalam linked list dengan current!=NULL. Pointer lanjut dengan current=current -> next.

Proses pengulangan linked list seperti pada penggalan program berikut ini:

// return the number of nodes in a list (while-loop version)

int length(struct node *head) {

int count = 0;

struct node * current = head;

while (current != NULL) {

count++

current = current -> next

}

return(count);

}

2.2. Mengubah sebuah pointer dengan referensi pointer

Banyak fungsi pada pada linked list perlu untuk merubah pointer kepala. Dalam

C++, anda juga dapat menyatakan parameterpointer sebagai argumen &. Untuk

Page 26: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

melakukan ini bahasa C++, lewati pointer ke pointer kepala. Pointer ke pointer kadang-

kadang ” reference pointer”

langkah utama untuk teknik ini adalah:

Merancang sebuah fungsi untuk mengambil pointer ke pointer kepala. Ini teknik standar

yang digunakan dalam C++ untuk melewati pointer ke “value of interest” yang

membutuhkan untuk diubah. Untuk mengubah struct node*, lewati struct node**

Gunakan '&' dalam panggilan untulk menghitung dan melewati pointer ke value of

interest

Gunakan '*' pada parameter dalam fungsi pemanggil untuk mengakses dan mengubah

value of interest

Fungsi Sederhana berikut ini adalah untuk membuat pointer kepala ke NULLdengan

menggunakan parameter reference

void changeToNull (struct node ** headRef)

*headRef = NULL;}

void ChangeCaller() {

Struct node* head1

Struct node* head2

ChangeToNull (&head1);

ChangeToNull (&head2);

}

Gambar di bawah ini menunjukan bagaimana pointer headRef dalam ChangeToNull

menunjukan ke head1 pada Change Caller.

ChangeCaller ()

head1

ChangeTo Null (&head1)

headRef

Page 27: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Gambar 3.1 Pointer headRef dalam ChangeToNull menunjuk ke head1

2.3. Membuat head list (kepala senarai) dengan perintah Push()

Cara termudah untuk membuat sebuah senarai (list) dengan menambah node pada

“akhir kepala (last head)” adalah dengan push().

Perhatikan fungsi berikut ini :

struct node* AddAthead() {

Struct node*head =NULL;

int i;

for (i=1; i<6; i++) {

push (&head,i);

}

// head == {5, 4, 3, 2, 1};

return (head);

}

Dalam membuat tambahan node pada akhir senarai (list) dengan menggunakan

perintah Push(), sebaiknya anda berhati-hati, sebab salah urutan untuk masing-masing

scrip maka urutannya akan terbalik.

2.4. Menambah Tail (Ekor) pada akhir List

Untuk menambahkan node ekor pada list, sebagian melibatkan penempatan pada

node terakhir, dan kemudian merubahnya, next field dari NULL untuk menunjuk pada

node baru seperti variabel tail, dalam contoh berikut ini yaitu menambah node 3 ke akhir

daftar {1,2}

Stack Heap

Head

1 2

Page 28: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Tail

newNode

Gambar 3.2. Membuat ekor pada akhir list

Untuk memasukan atau menghapus node di dalam list, anda membutuhkan pointer ke

node sebelum posisi itu, sehingga anda dapat merubahnya .next field.

Pada gambar 3.2 tersebut penjelasannya adalah sebagai berikut :

1. Head pointer akan menunjukan ke node 1

2. Kemudian node 1 akan menunjukan ke node 2, yang merupakan ekor.

3. Misalkan ada node baru misalnya node 3, maka dari node 2 akan menunjuk ke

node baru yaitu 3. sehingga posisi node 3 adalah posisi terakhir.

Pertanyaanya, bagaimana membuat data-data {1,2,3,4,5} yang ada pada list dengan

menambahkan node di akhir ekor. Kesulitannya adalah bahwa node yang pertama pasti

ditambah pada head pointer, tetapi semua node yang lain dimasukkan sesudah node

terakhir dengan menggunakan tail pointer. Cara yang terbaik untuk berhubungan dengan

kedua hal adalah menambah head node {1}. kemudian melakukan perulangan yang

terpisah yang menggunakan tail pointer untuk menambah semua node yang lain. Tail

pointer digunakan untuk menunjuk pada last node, dan masing-masing node baru

ditambah dengan tail → next

Perhatikan penggalan program berikut ini:

struct node* BuildWidthSpecialCase (){

struct node* head = NULL;

struct node*tail;

int i;

// Deal With the head node here, and set the tail pointer

Push (&head, 1);

tail =head;

// Do all the other nodes using 'tail'

3

Page 29: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

for (i=2; i<6; i++) {

push(&(tail → next), I); //add node at tail → next

tail = tail → next; // advance tail to point to last node

}

return(head); // head == {1, 2, 3, 4, 5};

}

2.5. Membuat referensi lokal

Untuk teknik ini, kita menggunakan “reference pointer” local yang selalu menunjuk ke

pointer terakhir dalam list. Semua tambahan pada list dibuat dengan refernce pointer.

Reference pointer tidak menunjuk ke head pointer, tetapi menunjuk ke .next field di dalam

last node terakhir dalam list.

Perhatikan penggalan program berikut ini:

struct node* BuildWidthLocalRef(){

struct node* head = NULL;

struct node** lasyPtrRefn=&head

int I;

for (i=1; i<6; i++);

Push (lastPtrRef, I);

LastPtrRef = &((*lastPtrRef)-> next);

}

Return(head);

}

Teknik ini pendek, tetapi di dalam perulangan cara ini agak membahayakan. Teknik

ini jarang sekali digunakan, tetapi itu merupakan cara yang baik untuk memahami

pengertian sebuah pointer. Cara kerja dari teknik ini adalah:

Pada puncak putaran, lastPtrRef menunjuk pointer terakhir dalam list. Pada

permulaaanya menunjuk ke head pointer itu sendiri. Berikutnya kemudian akan

menunjuk ke .next field di last node dalam list

Push (LastPtrRef); menambah node baru pada pointer akhir. Node baru menjadi node

terakhir dalam list.

Page 30: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

LastPtrRef= &((*lastPtrRef) → next; last PtrRef lanjut ke . Next field dan .next field

sekarang menjadi pointer terakhir dalam list.

Perhatikan gambar 3.3. berikut ini :

Stack Heap

LocalRef()

Head

lastPtrRef

Gambar 3.3 Membuat referensi local

3. OPERASI DALAM LINKED LIST

Operasi yang ada pada linked list adalah Menambah Node dan juga menghapus node

3.1. Menambah Node Baru

Untuk menambahkan sebuah node di dalam list, kita perlu mendefinisikan sebuah kepala

(head) dan ekor (tail). Pada awal list, posisi head dan tail masih menjadi satu. Setelah ada

tambahan node yang baru, maka posisinya berubah. Posisi kepala tetap pada awal list dan

posisi ekor pada akhir list atau node yang baru. Seterusnya, bila ada tambahan node, maka

posisi ekor akan bergeser sampai ke belakang dan akhir list ditunjukkan dengan NULL.

Adapun prosedurnya ditunjukkan pada penggalan program berikut ini:

void SLList :: AddANode()

{Tail -> Next = new list;

Tail=Tail ->Next;

}

Ilustrasi dari tahapan penambahan node dapat terlihat pada gambar 3.4

1 2

Page 31: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Adding a Node

Head

Before Tail

Step 1 Head New Node

Tail Next

Tail

Next

Step 2 Head NULL

Gambar 3.4 menambah node baru

Adapun penjelasan dari gambar 3.4 adalah sebagai berikut:

1. Tentukan dan Definisikan head dan tail, dimana dalam kondisi pertama kepala dan ekor

menunjuk pada node yang sama.

2. Misalkan ada node baru yang masuk, posisi head dan tail akan berubah. Head tetap

akan menunjuk pada node yang lama, sedangkan ekor akan menunjuk pada node yang

baru

3. Misalkan ada node yang baru, head tetap pada posisi awal, sedangkan tail akan terus

bergeser ke belakang dan pada akhir list ditunjukan oleh NULL.

3.2. Menghapus Node

Untuk menghapus node, dapat dilihat pada penggalan program berikut ini :

void SLList::DeleteANode(ListPtr corpse)) // <-- i though it was funny:)

{

ListPtr temp;

if (corpse === Head) //case 1 corpse = Head

{temp=Head;

Page 32: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Head=Head->Next;

}

else if(corpse == Tail) //case 2 corpse is at the end

{ temp = Tail;

Tail=Previous(Tail);

Tail->Next=NULL;

delete temp;

}

else //case 3 corpse is in middle somewhere

{ temp=Previous (corpse);

temp->Next=corpse->Next;

delete corpse;

}

CurrentPtr=Head; //Reset the class tempptr

}

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Moh. Sjukani, Struktur Data [ Algoritma & Struktur Data 2 ] dengan C, C++, Mitra Wacana

Media, Jakarta, 2008.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung, 2006.

Page 33: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

04 Team Dosen

Abstract Kompetensi

Page 34: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Operasi dasar stack dan contoh aplikasinya. Deklarasi stack dalam bahasa pemrograman

Mampu menjelaskan apa yang dimaksud dengan stack dan aplikasinya

Page 35: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

STACK

4. Pendahuluan

Stack disebut juga tumpukan dimana data hanya dapat dimasukkan dan diambil dari

satu sisi. Karena itu, stack bersifat LIFO (Last In First Out).

Tumpukan bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang

diletakkan diatas data yang lain. Satu hal yang perlu diingat bahwa kita bisa menambah

(menyisipkan) data, dan mengambil (menghapus) data melalui ujung yang sama, yang disebut

ujung atas tumpukan (top of stack). Tumpukan dapat diilustrasikan sebagai berikut:

Secara sederhana tumpukan bisa diilustrasikan seperti gambar dibawah ini. Dari

gambar dibawah ini kotak B ada di atas kotak A dan ada di bawah kotak C. Gambar dibawah ini

hanya menunjukan bahwa dalam tumpukan hanya bisa menambah atau mengambil sebuah

kotak lewat satu ujung yaitu ujung bagian atas. Dapat dilihat bahwa tumpukan merupakan suatu

senarai (list) yang mempunyai watak “masuk terakhir keluar pertama"(last in first out-LIFO).

F

E

D

C

B

A

Gambar 2. Tumpukan dengan 6 elemen

A A A

B

C

B

C

A

B

C

Keadaan

mula-mula

adalah

kosong

Setelah

ditumpuk

top

max

Page 36: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Implementasi alternatif stack adalah:

1. List dengan pointer untuk variable-length stack (ukuran stack bervariasi)

2. Array untuk fixed-length stack (ukuran stack sudah dibatasi, tidak dapat tumbuh)

Stack banyak digunakan dalam bidang ilmu komputer, misalnya dalam pengembangan

kompilator, pengelolaan backtracking untuk parser dan sebagainya.

Stack terdiri dari elemen S[1..top], dimana S[1] adalah elemen pada dasar stack dan

S[top] adalah elemen pada puncak stack. Jika top=0 berarti stack kosong. Jika top = N, dimana

N adalah jumlah elemen terbanyak yang dapat ditampung, berarti stack sudah penuh. Jika

stack sudah penuh tidak bias dilakukan penyisipan elemen baru. Pada stack yang

diimplementasikan dengan list, ukurannya bisa tidak terbatas (unbounded stack) kecuali

batasan ruang memori yang tersedia. Pada unbounded stack pemeriksaan yang diperlukan

adalah pemeriksaan apakah masih ada ruang memori yang tersedia untuk elemen yang baru.

Stack yang diimplementasikan dengan array disebut fixed length stack karena ukurannya tidak

bisa berubah, sedangkan stack yang diimplementasikan dengan list disebut variable-length

stack, karena ukurannya bisa berubah-ubah sesuai dengan penambahan dan penghapusan

elemen-elemennya.

Operasi yang dapat dilakukan stack adalah:

Menambah (push)

Mengambil (pop)

mengecek apakah stack penuh (isFull)

mengecek apakah stack kosong (isEmpty)

membersihkan stack (clear).

Mencetak isi stack (print)

2. Operasi-operasi Pada Stack

Membuat stack dan operasi-operasi yang dapat dilakukannya.

1. Mendefinisikan stack dengan menggunakan struct

2. M

endefi

nisika

typedef struct stack // Mendefinisikan stack dengan menggunakan struct

{

int top;

char data [15][20]; // menampung 15 data dengan jumlah string max 20 huruf

};

Page 37: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

n max_stack untuk maksimum isi stack

#define max_stack 15

3. Membuat variable array sebagai implementasi stack

stack tumpuk;

4. Mendeklarasikan operasi-operasi/fungsi yang dapat dilakukan stack.

a. Push (menginputkan data pada stack)

b. Pop (mengambil data pada stack)

c. IsFull(mengecek apakah stack penuh)

d. isEmpty(mengecek apakah stack kosong)

void push(char d[20])

{

tumpuk.top++;

strcpy(tumpuk.data[tumpuk.top],d);

printf("data berhasil dimasukkan");

}

void pop()

{

printf ("data %s terambil",tumpuk.data[tumpuk.top]);

tumpuk.top--;

}

int isEmpty() { if (tumpuk.top==-1) return 1; else return 0; }

int isFull()

{

if (tumpuk.top==max_stack-1)

return 1;

else

return 0;

}

Page 38: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

e. clear (membersihkan seluruh isi stack)

f. print (mencetak seluruh isi stack)

2.1. Operasi push dengan Single Stack

Operasi push merupakan proses penyisipan/pemasukan data ke dalam suatu tumpukan.

Dimana tumpukan tersebut akan dicek, apakah sudah penuh atau belum. Jika sudah penuh,

maka data tidak akan dimasukkan ke dalam tumpukan, tetapi jika masih kosong maka data

akan disisipkan di tumpukkan paling atas.

Algoritma Operasi Push:

If atas = maxelemen then

penuh: ← true (Tumpukan sudah penuh)

else

penuh ← false (Tumpukan masih kosong)

Atas ← atas + 1

Isi[Atas] ← x

Endif

2.2. Operasi Pop dengan Single Stack

void print()

{

for (int i=tumpuk.top;i>=0;i--)

printf ("%s\n",tumpuk.data[i]);

}

void clear()

{

tumpuk.top=-1;

printf("semua data terhapus.");

}

Page 39: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Operasi pop adalah operasi untuk menghapus elemen yang terletak pada posisi paling

atas dari sebuah tumpukan.

Algoritma Operasi Pop:

If atas = 0 then

(Tumpukan sudah kosong)

else

Atas ← atas - 1 (hapus 1 elemen pada tumpukan)

Endif

2.3. Double Stack Dengan Array

Double stack merupakan suatu teknik khusus yang dikembangkan untuk menghemat

memori dalam pembuatan dua stack dengan array. Intinya adalah penggunaan hanya sebuah

array untuk menampung dua stack.

Gambar 3. Gambaran Perbandingan Single Stack dan Doube Stack Dengan Array

Tampak jelas pada gambar di atas bahwa sebuah array daspat dibagi untukk dua stack, stack 1

bergerak ke kanan dan stack 2 bergerak ke kiri. Jika Top 1 (elemen teratas dari stack 1)

bertemu dengan top2 (elemen teratas dari stack 2), maka double stack telah penuh.

Algoritma Operasi Push pada double stack:

Stack Kosong

1 Top Max

Stack 1 Stack 2

1 Top 1 Max

Kosong

Top 2

Page 40: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

If not penuh then

Case nostack of (Tumpukan masih kosong)

1 : top[1] ← top[1] + 1

2 : top[2] ← top[2] - 1

Endcase

Stack[top[elemen]] ← elemen

Endif

Algoritma Operasi Pop pada double stack:

If not kosong then (Tumpukan tidak kosong)

Elemen ← stack[top[nostack]]

Case nostack of

1 : top[1] ← top[1] + 1

2 : top[2] ← top[2] - 1

Endcase

Endif

3. Pemanfaatan STACK

Salah satu pemanfaatan stack adalah untuk menulis ungkapan dengan menggunakan

notasi tertentu. Seperti kita ketahui, dalam penulisan ungkapan numeris, kita selalu

menggunakan tanda kurung untuk mengelompokkan bagian mana yang akan dikerjakan

terlebih dahulu. Perhatikan ungkapan berikut ini :

( C + D ) * ( E – F )

Dari contoh di atas ( C + D ) akan dikerjakan lebih dahulu, kemudian ( E – F ) dan hasilnya

akan dikalikan

Cara penulisan ungkapan sering disebut dengan notasi INFIX, yang artinya bahwa operator

ditulis diantara 2 operand.

Seorang ahli matematika bernama Jan lukasiewiccz kemudian mengembangkan suatu

cara penulisan ungkapan numeris yang kemudian dikenal dengan nama notasi PREFIX,

yang artinya adalah bahwa operator ditulis sebelum kedua operand yang akan disajikan.

Notasi lain, yang merupakan kebalikan dari notasi PREFIX adalah notasi POSTFIX,

Operator ditulis sesudah operand.

Page 41: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Contoh Notasi INFIX, PREFIX dan POSTFIX

INFIX PREFIX POSTFIX

A + B + A B A B +

A + B – C - + A B C A B C - +

( A + B ) * ( C - D ) * + A B – C D A B + C D - *

( 6 – 2 ) * ( 5 + 4 ) * - 6 2 + 5 4 6 2 – 5 4 + *

Program Konversi Bentuk INFIX ke bentuk POSTFIX

/*Program:InfixPostfix.cpp */

#include <stdio.h>

#include <conio.h>

#include <ctype.h>

char A[25], S[20];

int I, Top;

int Operand(char Top); // fungsi memeriksa operand

int Operator(char Op); // fungsi memeriksa operator

int Nilai(char X); // fungsi mencari nilai numerik sebuah karakter

void main()

{ char OprStack, OprBaru;

Top = -1;

clrscr();

printf("Arithmetic Statement : "); scanf("%s",A);

for (I=0; A[I] != '\0'; I++ )

{ if (Operand(A[I])) printf("%c", A[I]);

else { if(Operator(A[I]))

{ if(Top==-1 || S[Top] == '(' ) S[++Top] = A[I];

else { OprStack = S[Top]; OprBaru = A[I];

if (Nilai(OprBaru) > Nilai (OprStack))

S[++Top] = OprBaru;

Else

Page 42: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

{ while(Nilai(OprStack) >= Nilai (OprBaru)

&& Top > -1 && S[Top] != '(' )

{ printf("%c ", OprStack);

OprStack = S[--Top]; }

S[++Top] = OprBaru; }

}

}

else { if(Operand(A[I])=='(') S[++Top]=A[I];

else { while (Top>-1 && S[Top] != '(' )

{ printf("%c ", S[Top--] ); }

Top-- ;

}

} }

}

while (Top > -1)

printf("%c ", S[Top--]);

}

int Operand(char Op) // Fungsi Memeriksa Operand

{ if(isalpha(Op))

return(-1); //True

else return(0); //False

}

int Operator(char Opr) // Fungsi memeriksa Operator

{ if(Opr=='^' || Opr=='*' || Opr=='/' || Opr=='+' || Opr=='-')

return(-1);

else return(0);

}

int Nilai (char X) // Fungsi memeriksa Operator

{ if (X=='^') return(3);

else if(X=='*' || X=='/') return(2);

else if(X=='+' || X=='-') return(1);

else return(0);

}

Page 43: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Moh. Sjukani, Struktur Data [ Algoritma & Struktur Data 2 ] dengan C, C++, Mitra Wacana

Media, Jakarta, 2008.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung, 2006.

Page 44: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

05 87007 Team Dosen

Abstract Kompetensi

Page 45: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Definisi dan operasi dasar QUEUE. Penyajian QUEUE dalam Array

Mengetahui cara kerja QUEUE dan menerapkannya

Page 46: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

QUEUE (ANTRIAN)

5. Pendahuluan

Queue disebut juga antrian dimana data masuk di satu sisi dan keluar di sisi yang lain.

Karena itu, queue bersifat FIFO (First In First Out). Antrian (Queue) merupakan suatu

kumpulan data yang penambahan elemennya (masuk antrian) hanya bisa dilakukan pada suatu

ujung (disebut dengan sisi belakang/rear) atau disebut juga enqueue yaitu apabila seseorang

masuk ke dalam sebuah antrian. Jika seseorang keluar dari antrian/penghapusan (pengambilan

elemen) dilakukan lewat ujung yang lain (disebut dengan sisi depan/front) atau disebut juga

dequeue yaitu apabila seseorang keluar dari antrian.

Jadi, dalam antrian menggunakan prinsip “masuk pertama keluar pertama” atau disebut

juga dengan prinsip FIFO (first in first out). Dengan kata lain, urutan keluar akan sama dengan

urutan masuknya. Contoh : antrian mobil saat membeli karcis di pintu jalan tol, antrian di

bioskop dan sebagainya.

6. Operasi / Prosedur Standar pada QUEUE / ANTRIAN

QUEUE merupakan struktur data dinamis, ketika program dijalankan, jumlah elemennya

dapat berubah secara dinamis sesuai keperluan. Berikut ini operasi-operasi standar pada

queue :

a. Inisialisasi, merupakan prosedur untuk membuat queue pada kondisi awal, yaitu queue

yang masih kosong (belum mempunyai elemen).

b. InQueue, Insert Queue merupakan prosedur untuk memasukkan sebuah elemen baru

pada queue. Jumlah elemen Queue akan bertambah satu dan elemen tersebut

merupakan elemen belakang.

c. DeQueue, Delete Queue merupakan prosedur untuk menghapus/mengambil sebuah

elemen dari queue. Elemen yang diambil adalah elemen depan dan jumlah elemen queue

akan berkurang satu.

Hal lain yang perlu diperhatikan dalam suatu struktur dinamis adalah jumlah elemen

struktur data tersebut. Operasi-operasi yang berhubungan dengan jumlah elemen suatu

queue adalah :

1. Size, yaitu operasi untuk mendapatkan banyaknya elemen queue.

Page 47: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

2. Empty, yaitu prosedur untuk mengetahui apakah queue dalam keadaan kosong atau

tidak. Dengan status ini maka dapat dicegah dilakukannya operasi Dequeue dari

suatu queue yang kosong.

3. Full, merupakan prosedur untuk mengetahui apakah Queue penuh atau tidak.

Prosedur ini hanya berlaku untuk queue yang jumlahnya terbatas.

7. IMPLEMENTASI ANTRIAN DENGAN ARRAY

Karena antrian merupakan suatu kumpulan data, maka tipe data yang sesuai untuk

menyajikan antrian adalah menggunakan array atau list (senarai berantai).

Perhatikan gambar berikut ini :

depan

keluar A B C D E F

masuk

belakang

gambar 1. Contoh antrian dengan 6 elemen

Gambar di atas menunjukkan contoh penyajian antrian menggunakan array. Antrian di

atas berisi 6 elemen, yaitu A, B, C, D, E dan F. Elemen A terletak di bagian depan antrian dan

elemen F terletak di bagian belakang antrian. Jika ada elemen baru yang akan masuk, maka

elemen tersebut akan diletakkan di sebelah kanan F. Dan jika ada elemen yang akan dihapus,

maka A akan dihapus terlebih dahulu.

Elemen A terletak di bagian depan, kemudian disusul elemen B dan elemen yang paling

akhir atau paling belakang adalah elemen F. Misalkan ada elemen baru yang akan masuk maka

akan terletak di belakang elemen F, sehingga elemen baru akan menempati posisi yang paling

belakang.

Gambar 2 menunjukkan antrian di atas dengan penambahan elemen G dan H, sehingga

gambar 1. Menjadi :

depan

Page 48: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

keluar A B C D E F G H

masuk

belakang

gambar 2. Contoh penambahan antrian dengan 2 elemen

Gambar 3 menunjukkan antrian dengan penghapusan elemen A dan B, sehingga gambar

1 menjadi :

depan

keluar C D E F G H

masuk

belakang

gambar 3. Contoh penghapusan antrian dengan 2 elemen

Seperti pada tumpukan atau stack di dalam antrian juga dikenal 2 operasi dasar yaitu

menambah elemen baru yang akan diletakkan di bagian belakang antrian dan menghapus

elemen yang terletak di bagian depan antrian. Selain itu kita juga harus melihat antrian itu

mempunyai isi atau masih kosong.

Untuk memahami penggunaan antrian dalam array, kita membutuhkan deklarasi antrian,

misalnya sebagai berikut :

# define MAXN 6

Typedef enum { NOT_OK, OK } Tboolean;

Typedef struct {

Titem array [MAXN];

int first;

int last;

int number_of_items;

} Tqueue

Dengan deklarasi di atas, elemen antrian dinyatakan dalam tipe integer yang semuanya

Page 49: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

terdapat dalam struktur. Variabel first menunjukkan posisi elemen pertama dalam array, dan

variabel last menunjukkan posisi elemen terakhir dalam array.

Algoritma dari penggalan program di atas adalah :

1. Tentukan elemen yang akan dimasukkan ke dalam antrian (dalam hal ini adalah 6

elemen).

2. Deklarasikan struktur untuk menampung elemen pada antrian.

3. Selesai.

Untuk menambah elemen baru dan mengambil elemen dari antrian dalam antrian,

diperlukan deklarasi berikut ini :

void initialize_queue ( Tqueue *Pqueue)

{

Pqueue -> firs = 0;

Pqueue -> last = -1;

Pqueue -> number_of_items = 0;

}

Tboolean enqueue ( Tqueue *Pqueue, Titem item)

{

if (Pqueue -> number_of_items >= MAXN)

return (NOT_OK);

else {

Pqueue -> last++;

if (Pqueue -> last > MAXN -1)

Pqueue -> = 0;

Pqueue -> array[Pqueue->last] = item;

Pqueue -> number_of_items++;

return (OK);

}

}

Tboolean dequeue (Tqueue *Pqueue, Titem, item)

{

if (Pqueue -> number_of_items == 0)

return (NOT_OK);

Page 50: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

else {

*Pitem = Pqueue -> array[Pqueue->first++];

if (Pqueue -> first > MAXN -1)

Pqueue -> first = 0;

Pqueue -> number_of_items--;

return (OK);

}

}

Penggalan program di atas apabila dikelompokkan berdasarkan fungsinya adalah sebagai

berikut :

1. Deklarasikan Antrian

void initialize_queue ( Tqueue *Pqueue)

{

Pqueue -> firs = 0;

Pqueue -> last = -1;

Pqueue -> number_of_items = 0;

}

2. Fungsi untuk memasukkan elemen pada antrian adalah sebagai berikut :

Tboolean enqueue ( Tqueue *Pqueue, Titem item)

{

if (Pqueue -> number_of_items >= MAXN)

return (NOT_OK);

else {

Pqueue -> last++;

if (Pqueue -> last > MAXN -1)

Pqueue -> = 0;

Pqueue -> array[Pqueue->last] = item;

Pqueue -> number_of_items++;

return (OK);

Page 51: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

}

}

3. Fungsi untuk menghapus elemen pada antrian adalah sebagai berikut :

Tboolean dequeue (Tqueue *Pqueue, Titem, item)

{

if (Pqueue -> number_of_items == 0)

return (NOT_OK);

else {

*Pitem = Pqueue -> array[Pqueue->first++];

if (Pqueue -> first > MAXN -1)

Pqueue -> first = 0;

Pqueue -> number_of_items--;

return (OK);

}

}

Untuk memperjelas masing-masing fungsi pada deklarasi di atas, perhatikan gambar 4 di

bawah ini :

Antrian

6

5

4

3

2

1 first = 1

last = 0

Gambar 4. Contoh deklarasi antrian dengan 6 ukuran

Dari gambar 4 di atas last dibuat = 0 dan first dibuat = 1 serta antrian dikatakan kosong jika last

< first.

Antrian

Page 52: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

6

5

4 D last = 4

3 C

2 B

1 A first = 1

Gambar 5. Contoh deklarasi antrian penambahan 4 buah elemen

Dari gambar 5 di atas menunjukkan array dengan 6 elemen untuk menyajikan sebuah antrian

(dalam hal ini MAXN = 6). Pada saat permulaan antrian dalam keadaan kosong (gambar 4.)

pada gambar 5 terdapat 4 buah elemen yang ditambahkan. Dalam hal ini first = 1 dan last = 4.

Gambar 6 menunjukkan antrian setelah 2 elemen yaitu setelah A dan B dihapus.

Gambar 7 menunjukkan antrian baru setelah E dan F ditambahkan.

Banyaknya elemen dalam antrian adalah 6-3+1=4 elemen

Antrian

6

5

4 D last = 4

3 C first = 1

2

1

Gambar 6. Contoh deklarasi antrian penghapusan 2 buah elemen

Antrian

6 F last = 6

Page 53: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

5 E

4 D

3 C first = 3

2

1

Gambar 6. Contoh deklarasi antrian penambahan 2 buah elemen

Karena array terdiri dari 6 elemen, maka sebenarnya kita masih bisa menambah elemen lagi.

Tetapi jika ingin ditambah elemen baru, maka nilai last harus ditambah 1 menjadi 7. Padahal

array antrian hanya terdiri dari 6 elemen, sehingga tidak mungkin ditambah lagi, meskipun

sebenarnya array tersebut masih kosong di dua tempat.

4. IMPLEMENTASI ANTRIAN DENGAN POINTER

Pada ilustrasi contoh di atas penambahan yang selalu dilakukan disebelah belakang

antrian dan penghapusan yang selalu dilakukan pada elemen pada posisi paling depan,

maka antrian sebenarnya juga merupakan bentuk khusus dari suatu senarai berantai (linked

list). Jumlah elemen yang bisa diisi dalam antrian terbatas pada ukuran array yang

digunakan.

Untuk memanipulasi sebuah antrian bisa digunakan dua buah variabel yang menyimpan

posisi elemen paling depan dan elemen paling belakang. Apabila antrian diimplementasikan

menggunakan linked list maka cukup 2 pointer yang bisa dipakai yaitu elemen paling depan

(kepala) dan elemen paling belakang (ekor).

Untuk mengimplementasikan antrian dengan menggunakan pointer, perhatikan

algoritma berikut ini :

1. Tentukan struktur untuk menampung node yang akan dimasukkan pada antrian.

Deklarasi struktur pada penggalan program berikut ini :

struct queueNode

{

char data;

struct queueNode *nextPtr;

Page 54: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

};

typedef struct queueNode QUEUENODE;

ypedef QUEUENODE * QUEUENODEPTR;

QUEUENODEPTR headPtr = NULL, tailPtr = NULL;

2. Deklarasikan penambahan elemen baru pada antrian, dimana letaknya adalah paling

belakang. Deklarasi penambahan elemen baru tersebut dapat dilihat pada penggalan

program berikut ini :

void enqueue ( QUEUENODEPTR *headPtr, QUEUENODEPTR *tailPtr, char value )

{

QUEUENODEPTR newPtr = malloc ( sizeof ( QUEUENODE ) );

If ( newPtr != NULL )

{

newPtr -> data = value;

newPtr -> nextPtr = NULL;

if ( isEmpty ( *headPtr ) )

*headPtr = newPtr;

else

( *tailPtr ) -> nextPtr = newPtr;

*tailPtr = newPtr;

}

3. Lakukan pengecekan terhadap antrian, apakah antrian dalam kondisi kosong atau tidak.

Kalau kondisi antrian kosong, maka elemen bisa dihapus. Penggalan program berikut ini

akan menunjukkan kondisi tersebut.

int isEmpty ( QUEUENODEPTR headPtr )

{

return headPtr == NULL;

}

Page 55: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Moh. Sjukani, Struktur Data [ Algoritma & Struktur Data 2 ] dengan C, C++, Mitra Wacana

Media, Jakarta, 2008.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung, 2006.

Page 56: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

06 87007 Team Dosen

Abstract Kompetensi

Bubble Sort, Selection Sort, Memahami Jenis-Jenis

Page 57: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Insertion Sort. Membuat Algoritma dan penerapannya ke dalam bahasa pemrograman

Sorting Sederhana dan dapat membuat Algoritma dan program sorting.

SORTING

1. Definisi Sorting

Salah satu bagian penting dari struktur data adalah sorting atau pengurutan data. Ada

banyak sekali Algoritma pengurutan data di dunia komputer, yatu : bubble sort, selection sort,

insertion sort, exchange sort, quick sort, merge sort, dan lain lain.

Sorting adalah proses pengurutan data yang sebelumnya disusun secara acak atau

tidak teratur sehingga menjadi tersusun secara terurut menurut suatu aturan tertentu.

Pada umumnya terdapat 2 jenis pengurutan :

Ascending (naik, pengurutan dari karakter/angka kecil ke karakter/angka besar).

Descending (turun, pengurutan dari karakter/angka besar ke karakter/angka kecil).

Contoh :

Data acak : 5 6 8 1 3 25 10

Terurut Ascending : 1 3 5 6 8 10 25

Terurut Descending : 25 10 8 6 5 3 1

2. Metode Pengurutan

Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam cara /

metoda. Beberapa metoda diantaranya :

15. Bubble / Exchange Sort

16. Selection Sort

17. Insertion Sort

2.1 Metode Bubble Sort

Metode bubble sort adalah metode yang mendasarkan penukaran dua buah elemen

untuk mencapai keadaan urut. Metode ini mempunyai perilaku seperti gelembung dimana bila

akan diurutkan naik nilai yang besar akan naik (indeks besar) sementara nilai yang kecil akan

Page 58: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

turun (indeks kecil). Setiap data akan dibandingkan dengan data yang ada disebelahnya

sampai dengan data terakhir. Metode ini adalah yang termudah, tetapi paling tidak efisien.

Contoh data-data sebagai berikut akan diurut dari yang terkecil sampai yang terbesar dari ke 8

data tersebut dan akan menggunakan pembandingan data yang paling akhir:

5 34 32 25 75 42 22 2

Adapun langkah-langkah pengurutan adalah sebagai berikut :

Langkah 1:

5 34 32 25 75 42 22 2

5 34 32 25 75 42 2 22

5 34 32 25 75 2 42 22

5 34 32 25 2 75 42 22

5 34 32 2 25 75 42 22

5 34 2 32 25 75 42 22

5 2 34 32 25 75 42 22

2 5 34 32 25 75 42 22

Hasilnya adalah :

2 5 34 32 25 75 42 22

Langkah 2 :

2 5 34 32 25 75 42 22

2 5 34 32 25 75 22 42

2 5 34 32 25 22 75 42

2 5 34 32 22 25 75 42

2 5 34 22 32 25 75 42

2 5 22 34 32 25 75 42

Hasilnya adalah :

2 5 22 34 32 25 75 42

Page 59: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Langkah 3 :

2 5 22 34 32 25 75 42

2 5 22 34 32 25 42 75

Hasilnya adalah :

2 5 22 34 32 25 42 75

Langkah 4 :

2 5 22 34 32 25 42 75

2 5 22 34 25 32 42 75

2 5 22 25 34 32 42 75

Langkah 5 :

2 5 22 25 34 32 42 75

2 5 22 25 32 34 42 75

Hasilnya adalah :

2 5 22 25 32 34 42 75

Untuk pengurutan data dari besar ke kecil adalah kebalikan dari proses di atas.

Algoritma dari langkah-langkah di atas adalah :

1. Tentukan data-data yang akan diurutkan dan disimpan dalam array.

2. Lakukan pengulangan dari data-data tersebut.

3. Lakukan pembandingan antara data yang satu dengan data yang lain, dimana kalau data

yang satu lebih kecil dari data yang lain, maka posisinya ditukar. Kalau tidak, posisinya

tetap.

4. Tampilkan data hasil pembandingan.

5. Ulangi langkah 3, sampai semua data dibandingkan.

6. selesai.

Implementasi dari langkah-langkah dalam Bubble Sort dapat dilihat pada program berikut ini,

program Ascending dengan menggunakan Bubble Sort.

#include <iostream.h>

Page 60: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

#include <iomanip.h>

void main()

{

int NumList[8]= { 5, 34, 32, 25, 75, 42, 22, 2};

int i,ii,iii;

int Swap;

cout<<"Data sebelum diurutkan : \n";

for(int ctr=0; ctr<8; ctr++)

{

cout<< setw(3)<<NumList[ctr];

}

cout<<"\n\n";

for(i=0; i<7; i++)

for(ii=0; ii<7; ii++)

if (NumList[ii] > NumList[ii+1])

{

Swap = NumList[ii];

NumList[ii] = NumList[ii+1];

NumList[ii+1] = Swap;

}

cout<<"Data setelah diurutkan : \n" ;

for (iii=0; iii<8; iii++);

cout<<setw(3)<<NumList[iii];

cout<<endl<<endl;

}

2.2 Metode Selection Sort

Metode seleksi (Selection Sort) adalah suatu metode pengurutan yang membandingkan

elemen yang sekarang dengan elemen berikutnya sampai elemen yang terakhir. Jika

ditemukan elemen lain yang lebih kecil dari elemen sekarang, maka dicatat posisinya dan

kemudian ditukar. Misalkan ada data-data sebagai berikut yang akan diurutkan dari yang

terkecil sampai yang terbesar dari data tersebut.

Page 61: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

5 34 32 25 75 42 22 2

Langkah-langkahnya adalah sebagai berikut :

Langkah 1 :

Posisi : 1 2 3 4 5 6 7 8

Data : 5 34 32 25 75 42 22 2

Pembanding Posisi

5 < 34 1

5 < 32 1

5 < 25 1

5 < 75 1

5 < 42 1

5 < 22 1

5 < 2 8

Tukar data pada posisi 1 dengan data posisi 8

Hasil Sementara : 2 34 32 25 75 42 22 5

Langkah 2 :

Posisi : 1 2 3 4 5 6 7 8

Data : 2 34 32 25 75 42 22 5

Pembanding Posisi

34 > 32 3

32 > 25 4

25 < 75 4

25 < 42 4

25 > 22 7

22 > 5 8

Tukar data pada posisi 2 dengan data pada posisi 8

Hasil Sementara : 2 5 32 25 75 42 22 34

Page 62: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Langkah 3 :

Posisi : 1 2 3 4 5 6 7 8

Data : 2 5 32 25 75 42 22 34

Pembanding Posisi

32 > 25 4

25 < 75 4

25 < 42 4

25 > 22 7

22 < 34 7

Tukar data pada posisi 3 dengan data pada posisi 7

Hasil Sementara : 2 5 22 25 75 42 32 34

Langkah 4 :

Posisi : 1 2 3 4 5 6 7 8

Data : 2 5 22 25 75 42 32 34

Pembanding Posisi

75 > 42 6

42 > 32 7

32 < 34 7

Tukar data pada posisi 5 dengan data pada posisi 7

Hasil Sementara : 2 5 22 25 32 42 75 34

Langkah 5 :

Posisi : 1 2 3 4 5 6 7 8

Data : 2 5 22 25 32 42 75 34

Pembanding Posisi

42 < 75 6

42 > 34 8

Tukar data pada posisi 6 dengan data pada posisi 8

Page 63: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Hasil Sementara : 2 5 22 25 32 34 75 42

Langkah 6 :

Posisi : 1 2 3 4 5 6 7 8

Data : 2 5 22 25 32 34 75 42

Pembanding Posisi

75 > 42 8

Tukar data pada posisi 7 dengan data pada posisi 8

Hasil Akhir : 2 5 22 25 32 34 42 75

Proses pengurutan data di atas memerlukan 6 kali perulangan.

Algoritma dari langkah-langkah di atas adalah :

1. Tentukan data-data yang akan diurutkan dan disimpan dalam array.

2. Lakukan pengulangan dari data-data tersebut.

3. Lakukan pembandingan antara data yang satu dengan data yang lain, dimana kalau

data yang satu lebih kecil dari data yang lain, maka posisinya ditukar. Kalau tidak,

posisinya tetap.

4. Tampilkan data hasil pembandingan.

5. Ulangi langkah 3, sampai semua data dibandingkan.

6. Selesai.

Implementasi program selection adalah sebagai berikut :

#include <stdio.h>

#include <conio.h>

int A[8]={2,5,22,25,32,34,42,75},i,j,tampung,pos;

main() {

clrscr();

printf("Sebelum Sorting : \n");

for (i=0; i<8; i++) {

printf("%i " , A[i]);

}

for (i=0; i<8-i; i++) {

Page 64: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

if (A[j]<A[pos])

{

pos=j;

}

}

if (pos!=i)

{

tampung=A[pos];

A[pos]=A[i];

A[i]=tampung;

}

printf("\n\nSetelah Sorting : \n");

for (i=0; i<8; i++)

{

printf("%i ", A[i]);

}

return 0;

}

2.3. Metode Insertion Sort

Metode Insertion(penyisipan) adalah dengan membandingkan data/elemen ke-n (n

mulai dari data ke-2 hingga elemen terakhir) dengan elemen-elemen sebelumnya. Jika

ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan (tukar posisi) sesuai

dengan posisi seharusnya.

Contoh : 8 3 7 4

Langkah 1 : 3 dibandingkan dengan 8, karena 3 < 8 maka kedua elemen ditukar posisinya

yang menghasilkan urutan 3 8 7 4

Langkah 2 : 7 dibandingkan dengan 8, karena 7 < 8 maka 7 ditukar posisinya dengan 8

yang menghasilkan urutan 3 7 8 4

Langkah 3 : 4 dibandingkan dengan 8, karena 4 < 8 maka tukar posisinya, hasil sementara

adalah 3 7 4 8

Page 65: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Kemudian 4 dibandingkan dengan 7, karena 4 < 7 maka tukar posisinya,

hasilnya adalah 3 4 7 8

Kemudian 4 dibandingkan dengan 3, karena 4 > 3 , maka posisinya tetap,

hasil akhirnya adalah 3 4 7 8

Algoritma dari langkah-langkah di atas adalah :

1. Tentukan data-data yang akan diurutkan dan disimpan dalam array.

2. Lakukan pembandingan antara data ke 2 hingga elemen terakhir dengan data

sebelumnya, jika data yang dibandingkan bernilai lebih kecil, maka posisinya ditukar.

3. Tampilkan data hasil pembandingan.

4. Ulangi langkah 2, sampai semua data dibandingkan.

5. Selesai.

Implementasi program insertion adalah sebagai berikut :

#include <stdio.h>

#include <conio.h>

int A[5]={8,3,7,4},i,j,tampung;

main()

{

clrscr();

printf("Sebelum Sorting : \n");

for (i=0; i<=4; i++)

{

printf("%i " , A[i]);

}

for (i=1; i<4; i++)

{

tampung=A[i];

j=i-1;

while (A[j]>tampung && j>0)

{

A[j+1] = A[j];

j--;

Page 66: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

}

A[j+1]=tampung;

}

printf("\n\nSetelah Sorting : \n");

for (i=0; i<5; i++)

{

printf("%i ", A[i]);

}

return 0;

}

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung, 2006

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta,

2004

Page 67: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

07 87007 Fajar Masya

Abstract Kompetensi

Latihan pemecahan masalah Mampu menerapkan Stack, QUEUE

Page 68: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Stack, QUEUE dan Sorting dan Sorting sederhana dalam solusi pemecahan masalah

REVIEW dan Latihan Soal

Buatlah function pangkat dengan input a dan b untuk menghitung a^b. Function ini

mengembalikan (return) hasil perhitungan kepada function yang memanggilnya.

Contoh :

3^4 = 3 x 3 x 3 x 3 = 81

4^3= 4 x 4 x 4 = 64.

Contoh Codingnya:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <ctype.h>

#include <string.h>

int main ()

{

int a,b,c,d ;

printf("Masukan Angka A: ");scanf("%d", &a);

printf("Masukan Angka B: ");scanf("%d", &b);

d=1;

c=1;

while (d <= b){

d=d+1;

c=c*a;

}

printf("\nNilai = %d",c);

getch ();

return 0;

Page 69: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

}

Buatlah function faktorial dengan input bilangan bulat positif a. Function ini mengembalikan

(return) hasil perhitungan kepada function yang memanggilnya. “a!” dibaca “Faktorial dari

a”

Contoh :

3! = 3 x 2 x 1 = 6

5! = 5 x 4 x 3 x 2 x 1 = 120

contoh codingnya:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <ctype.h>

#include <string.h>

int main () {

int a,b,c,d ;

printf("Masukan Angka A: ");scanf("%d", &a);

d=1; c=1; b=a;

while (d <= a) {

d=d+1;

c=c*b;

b=b-1;

}

printf("\nnilai = %d",c);

getch ();

return 0;

}

Buatlah program Penjumlahan 2 Matriks berukuran sama yang masing-masing berukuran

tidak lebih dari 10 x 10

Code Programnya adalah :

Page 70: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

# include <stdio.h>

# include <conio.h>

void isi_matriks (int a[10][10], int brs, int klm) {

int i, j, posisi_brs;

printf("\nMatriks %d x %d\n", brs, klm);

posisi_brs = wherey();

for (i = 0; i < brs; i++) {

for (j = 0; j < klm; j++) {

gotoxy(j * 5 + 1, posisi_brs);

scanf("%d", &a[i][j]); }

posisi_brs++; }

printf("\n"); }

void jumlah_matriks (int a[10][10], int b[10][10],

int c[10][10], int brs, int klm) {

int i, j;

for (i = 0; i < brs; i++)

for (j = 0; j < klm; j++)

c [i] [j] = a[i][j] + b[i][j]; }

void cetak_matriks (int a[10][10], int brs, int klm) {

int i, j;

for (i = 0; i < brs; i++) {

for (j = 0; j < klm; j++)

printf("%3d ", a[i][j]);

printf("\n"); }

}

int main () {

int mat_a[10][10], mat_b[10][10], mat_c[10][10];

int baris, kolom;

printf("ukuran baris ? "); scanf("%d", &baris);

printf("ukuran kolom ? "); scanf("%d", &kolom);

isi_matriks(mat_a, baris, kolom);

isi_matriks(mat_b, baris, kolom);

jumlah_matriks(mat_a, mat_b, mat_c, baris, kolom);

Page 71: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

printf("\nHasil jumlah:\n");

cetak_matriks(mat_c, baris, kolom);

fflush(stdin); getchar();

return 0;

}

Buatlah algoritma dan program untuk menampilkan 10 bilangan secara menurun yaitu 10, 9,

8, 7, ..., 1 dengan menggunakan linked list.

Algoritma :

1. Tentukan struktur untuk menampung data dalam linked list.

2. Tentukan data-data yang akan dimasukkan ke dalam linked list.

3. Lakukan perulangan terhadap semua data.

4. Tampilkan data.

5. Ulangi langkah 3 sampai semua data dimasukkan.

6. Selesai.

Implementasi dari Algoritma di atas pada program adalah sebagai berikut :

#include<iostream.h>

typedef struct item {

int val;

item * next;

} item;

int main() {

item * head = NULL;

int i;

for (i=1; i<= 10; i++) {

item * curr = new item;

curr->val = i;

curr->next = head;

head = curr;

}

while (head) {

cout << head->val << " ";

Page 72: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

head = head->next;

}

return 0;

}

Buatlah algoritma dan program untuk memasukkan dan mengeluarkan data dalam antrian.

Algoritma dari permasalahan di atas adalah :

1. Deklarasikan elemen yang akan dimasukkan dalam antrian.

2. Deklarasikan struktur untuk menampung elemen tersebut.

3. Tentukan fungsi untuk memasukkan elemen pada antrian.

4. Tentukan fungsi untuk mengambil elemen dari antrian.

5. Tentukan fungsi untuk menampilkan semua elemen pada antrian.

6. Masukkan huruf ke dalam antrian. Jika huruf yang dimasukkan selain huruf x dan angka

1, kerjakan langkah 3.

7. Jika yang dimasukkan adalah angka 1, kerjakan langkah 5.

8. Jika yang dimasukkan adalah huruf x maka kerjakan langkah 9.

9. Selesai.

Code Programnya adalah :

#include <stdio.h>

#include <conio.h>

typedef char Titem;

// The interface of queue

#define MAXN 5

typedef enum {NOT_OK, OK } Tboolean;

typedef struct {

Titem array [MAXN];

int first;

int last;

int number_of_items;

} Tqueue;

void initialize_queue (Tqueue *Pqueue);

Tboolean enqueue (Tqueue *p, Titem item);

Page 73: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Tboolean dequeue (Tqueue *p, Titem *Pitem);

void print_queue(const Tqueue *Pqueue);

// Application

#include <ctype.h>

void main(void) {

Tqueue queue;

Tboolean succeed;

char chr;

initialize_queue(&queue);

printf("\nMasukkan sebuah huruf untuk masuk dalam antrian ");

printf("\natau Tekan angka 1 untuk mengeluarkan sebuah huruf dalam antrian");

printf("\natau Tekan angka X untuk keluar\n");

chr = getche();

while (chr != 10 && chr != 13) {

if (isalpha (chr)) {

succeed=enqueue(&queue, chr);

print_queue(&queue);

if (!succeed)

printf("\n Enqueue operation failed\n"); }

if (chr == '1') { succeed = dequeue(&queue, &chr);

if (succeed) {

printf("\n huruf keluar dari antrian %c", chr);

print_queue(&queue); }

else printf("\nDequeue operation failed\n "); }

chr = getche(); } }

// The implementations of operation functions of the queue

void initialize_queue (Tqueue *Pqueue) {

Pqueue->first = 0;

Pqueue -> last = -1;

Pqueue -> number_of_items = 0; }

Tboolean enqueue ( Tqueue *Pqueue, Titem item) {

if (Pqueue -> number_of_items >= MAXN)

return (NOT_OK); else {

Pqueue -> last++;

Page 74: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

if (Pqueue -> last > MAXN -1)

Pqueue -> last = 0;

Pqueue -> array[Pqueue->last] = item;

Pqueue -> number_of_items++;

return (OK); } }

Tboolean dequeue(Tqueue *Pqueue, Titem *Pitem) {

if (Pqueue -> number_of_items == 0)

return (NOT_OK); else {

*Pitem = Pqueue -> array[Pqueue->first++];

if (Pqueue -> first > MAXN -1)

Pqueue -> first = 0;

Pqueue -> number_of_items--;

return (OK); } }

void print_queue (const Tqueue *Pqueue) { int i, n;

printf("\nQueue now: \n\n");

for (n=1, i=Pqueue->first ; n <= Pqueue->number_of_items; n++) {

printf(" %c ", Pqueue -> array[i] ) ;

i++;

if (i>MAXN-1)

i= 0; }

printf("\n\n"); }

Buatlah algoritma dan program untuk memasukkan 10 buah data dengan menggunakan

metode bubble sort dan tampilkan data tersebut secara ascending. Input data terserah.

Algoritma :

1. Tentukan data-data yang akan diurutkan dan disimpan dalam suatu array.

2. Lakukan pengulangan dari data-data tersebut.

3. Lakukan pembandingan antara data yang satu dengan data yang lain, dimana kalau

data yang satu lebih kecil dari data yang lain, maka posisinya ditukar. Kalau tidak,

posisinya tetap.

4. Tampilkan data hasil pembandingan.

5. Ulangi langkah 3, sampai semua data dibandingkan.

6. Selesai.

Page 75: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

//Program:bubblesortascending.cpp

# include <iostream.h>

# include <conio.h>

void bubble_sort(long [],int);

main()

{

clrscr();

const int array_size=10;

long array[array_size]={0};

cout<<"\n * Array size = 10" <<endl;

cout<<"\ * Data Type = long"<<endl;

gotoxy(1,24);

cout<<" ************************************* ";

gotoxy(1,25);

cout<<" ************************************* ";

gotoxy(1,10);

cout<<" Enter the Array: "<<endl<<endl;

for(int count_1=0;count_1<array_size;count_1++)

{

cout<<"\t Element["<<count_1<<"] = ";

cin>>array[count_1];

}

bubble_sort(array,array_size);

gotoxy(40,10);

cout<<" Sorted Array: ";

for(int count_2=0;count_2<array_size;count_2++)

{

gotoxy(50,12+count_2);

cout<<" Element["<<count_2<<"]= "<<array[count_2]<<endl;

}

getch();

return 0;

}

Page 76: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

void bubble_sort(long array[], int array_size)

{

for(int count_1=0;count_1<array_size;count_1++)

{

for(int count_2=0;count_2<array_size;count_2++)

{

if(array[count_2]>array[count_2+1])

{

long temp=array[count_2];

array[count_2]= array[count_2+1];

array[count_2+1]=temp;

}

}

}

}

Buatlah algoritma dan program untuk memasukkan 10 buah data dengan menggunakan

metode selection sort dan tampilkan data tersebut secara ascending. Input data terserah.

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung, 2006

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta,

2004

Page 77: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

08 87007 Team Dosen

Abstract Kompetensi

1. General Tree Menjelaskan jenis-jenis tree

Page 78: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

A

B C D

E F G H I J

K L M

2. Binary Tree

Dan penyelesaiannya

STRUCTURE POHON (TREE)

Struktur Data Non Linier terdiri dari :

7. Struktur Pohon (Tree Structure)

8. Graph

Definisi Pohon adalah :

Susunan dari satu atau lebih simpul (node) yang terdiri dari satu simpul khusus yang

disebut akar (root) sedang sisanya membentuk subtree dari akar.

LEVEL

0

1

2

3

Akar dari struktur pohon ini adalah A

Satu simpul akan berisi :

~ Informasi ( misal, A , B, dst)

~ Cabang-cabang (Link) yang menghubungkan Kesimpul simpul yang lain.

Simpul A sebagai akar mempunyai 3 Link yang membentuk SUBTREE B,C, D.

Jumlah SUBTREE dari satu simpul disebut : DERAJAT (DEGREE).

Page 79: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Derajat Simpul : A = 3

B = 2

C = 1

G = 0

Simpul yang mempunyai derajat = 0 disebut : SIMPUL TERMINAL atau DAUN (LEAF)

Contoh simpul daun gambar diatas adalah : K , L, F, G, M, I , J

Struktur Pohon yang terkenal adalah struktur geneologi (silsilah). Dalam struktur tersebut

adanya simpul anak (children) dan orangtua(parent)

Contoh anak D adalah H, I, J

Orangtua D adalah A

Anak dari orang tua yang sama (saudara sekandung) disebut sibling misal H,I,J.

DERAJAT (DEGREE) SUATU POHON

Adalah derajat maksimum dari suatu simpul dalam pohon.

Contoh derajat pohon dalam gambar diatas adalah 3.

Nenek Moyang dari dari suatu simpul adalah seluruh simpul-simpul yang ada sepanjang

lintasan dari akar sampai simpul tersebut.

Contoh nenek moyang dari M adalah A, D dan H.

KEDALAMAN (HEIGHT atau DEPTH)

Kedalaman suatu pohon ditentukan oleh level maksimum dari simpul dalam pohon.

Contoh kedalaman pohon dari gambar diatas adalah A.

HUTAN (FOREST)

Adalah susunan dari beberapa pohon.

Bila akar A dihilangkan maka akan diperoleh hutan dengan 3 pohon yaitu :

B(E(K,L),F)

C(G)

D(H(M),I,J)

Ada 2 cara untuk menyatakan struktur pohon yaitu :

3. Gambar

4. Daftar(List)

Page 80: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

B C D

E F G H I J

A

Pernyataan dengan Gambar adalah seperti terlihat pada Gambar diatas sedangkan kalau

dengan List adalah sebagai berikut :

(A(B(E(K,L),F),C(G),D(H(M),I,J)))

Proses dalam struktur data non linier, bentuk pohon akan lebih mudah digambarkan bila

diketahui :

3. n ( Jumlah Simpul atau Node )

4. k ( Derajat Pohon)

Dari data n dan k maka dapat dihitung :

JUMLAH LINK = n . k

JUMLAH NULL-LINK = n( k - 1)+1

JUMLAH NON ZERO LINK = n - 1

STRUKTUR NODE K-ary

DATA

Child –1

……

Child-k

Pohon 3 - ary :

Dari gambar diatas diket : n = 10 , k = 3

Maka dapat dihitung :

JUMLAH LINK = n . k = 3. 10 = 30

JUMLAH NULL LINK = n ( k – 1 ) + 1

Page 81: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

A

B

C

G

A

B C

D E

= 10( 3 – 1 ) + 1

= 21

JUMLAH NON ZERO LINK = n – 1 = 10 – 1 = 9

POHON BINER (BINARY TREE)

Tipe yang sangat penting dari struktur data

Dalam struktur pohon biner hanya dikenal SUBTREE KIRI DAN SUBTREE KANAN saja

Simpul dalam pohon biner adalah :

Susunan dari simpul-simpul yang masing-masing bisa kosong atau terdiri dari akar dan dua

pohon biner yang terpisah dan disebut subtree kiri dan subtree kanan.

Pohon biner dengan subtree kanan kosong

Pohon biner dengan subtree kiri kosong

Complete Binary Tree

Page 82: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

A

B C

D E F G

1

2

10

3

4 5

11

6 7

12 8 9 13 14 15

Pohon Biner Penuh ( Full Binary Tree)

Adalah pohon biner yang mempunyai simpul atau node lengkap dari level 1

sampai level ke I

Full Binary Tree

Pohon Biner Lengkap ( Complete Binary Tree) Adalah pohon biner yang mempunyai simpul dengan nomor urut 1 sampai dengan n. i = level Level Anak terkiri menunjukkan anak Terkanan menujukkan 1 Jumlah simpul jumlah max simpul i – 1 i 2 2 – 1 2 3 4

LEVEL ANAK TERKIRI

ANAK TERKANAN

1 1 1

2 2 3

3 4 7

4 8 15

5 16 31

6 32 63

7 64 127

8 128 255

Page 83: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

A

9 256 511

10 512 1023

11 1024 2047

12 . . . .

2048 . . . .

4095 . . . .

No anak kiri (Left Child) = No. Parent * 2

No anak kanan (Right Child) = (No. Parent *2) + 1

No Parent = No Child

2

Pertanyaan

1. Pohon dengan simpul jumlah simpul = 273 merupakan lengkap atau penuh

2. Berapa kedalamannya ?

3. No berapa simpul terkiri dari level tersebut ?

4. berapa jumlah maxsimum simpul level 7

No berapa anak kanan dari simpul ke 180 ?…..ada dilevel berapa anak tersebut.

No. berapa orang tua dari simpul ke 83 ? … ada dilevel berapa orangtua tsb

Kedalaman minimal dari pohon biner adalah :

2 Log n + 1 -- dimana n = jumlah simpul

Contoh bila n = 15

Maka kedalamannya minimal = 2 Log 15 + 1

= Log 15 + 1

Log 2

= 1.17 / 0.3 + 1 = 3 + 1

= 4

SKEWED TREE

Binary Tree yang semua nodenya (kecuali leaf/daun) hanya memiliki satu child.

Adalah Pohon biner yang miring kekiri atau kekanan, atau dengan kata lain pohon biner dengan

subtree kiri kosong atau subtree kanan kosong.

Page 84: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

B

C

D

Pohon Biner seperti ini disimpan dalam bentuk Array sangat memboroskan

Bentuk Array sangat memboroskan

REPRESENTASINYA sebagai berikut :

1 A

2 B

3

4 C

5

6

7

8 D

9

15

Kosong sebanyak 7 Elemen

Berdasarkan full binary tree, pohon jenis diatas memiliki banyak simpul kosong.

Seharusnya dibawah A, terdapat simpul anak yg selevel, namun hanya terdapat 1 simpul anak

yaitu B, dibawah B, seharusnya terdapat 1 simpul anak B, 2 simpul anak lainnya yang selevel

atau 2 simpul anak dari simpul yg selevel dengan B, kosong 3 array.

Terlihat dari contoh diatas bahwa penyimpanan data dalam memori dari pohon biner

hanya menguntungkan kalau pohon binernya penuh sehingga tidak memboroskan tempat.

Untuk menanggulangi ini maka perlu menggunakan representasi Linked List, dimana masing-

masing simpul akan mempunyai 3 field yaitu :

LCHILD DATA RCHILD

ATAU

Contoh Representasi Link Pohon Biner Biasa

DATA

LCHILD RCHILD

Page 85: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

*

struct NAMA_SIMPUL { Tipe Data DATA; Struct NAMA_SIMPUL *RCHILD, *LCHILD; };

Skewed Tree

PENELUSURAN POHON BINER ( Binary Tree Traversal )

Ada 3 macam Traversal :

5. Inorder Traversal

6. Preorder Traversal

7. Postorder Traversal

1. Inorder Traversal

Akan menghasilkan bentuk INFIX, Bentuknya :

Operand1 Operator Operand2 A + B

Contoh

Tulislah hasil penelusuran pohon biner berikut ini bila ditelusuri secara INORDER.

B

0 D 0 0 E 0

C

0 F 0 0 G 0

A

A 0

B 0

C 0

Page 86: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

+ C

A B

*

+ C

A

B

Langkah-langkahnya :

1. Telusuri Subtree (sub pohon) Kiri

2. Proses Simpul Akar

3. Telusuri Subtree(Sub pohon) Kanan

maka akan diperoleh persamaan INORDERnya adalah: (A + B) * C

2. Preorder Traversal

Akan menghasilkan bentuk PREFIX, Bentuknya

Operator Operand1 Operand2

+ A B

Contoh

Tulislah hasil penelusuran pohon biner berikut ini bila ditelusuri secara PREORDER.

Langkah-langkahnya :

1. Proses Simpul Akar

2. Telusuri Subtree(sub pohon) Kiri

3. Telusuri Subtree(Sub pohon) Kanan

maka akan diperoleh persamaan PREORDERnya adalah: * + A B C

3. Postorder Traversal

Akan menghasilkan bentuk POSTFIX, Bentuknya :

Operand1 Operand2 Operator

A B +

Page 87: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

*

+ C

A B

-

C

/

A +

5

D

- *

7 E F G

*

Contoh

Tulislah hasil penelusuran pohon biner berikut ini bila ditelusuri secara POSTORDER.

Langkah-langkahnya :

4. Telusuri Subtree(sub pohon) Kiri

5. Telusuri Subtree(Sub pohon) Kanan

6. Proses Simpul akar

maka akan diperoleh persamaan POSTORDERnya adalah: A B + C *

SOAL latihan untuk minggu depan

18. Buat Persamaan INORDER, PREORDER, DAN POST ORDER dari Tree Berikut :

19. Diket Persamaan POST ORDER :

A B / C * D E ** F / + 2 – Buat INORDER, PREORDER, dan buat Tree nya.

Representasi Dari Pohon K-Ary ke Binary.

Page 88: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Pohon 3 Ary

Ke binary 2 Aray

Pohon K-Ary

Jumlah NullLink = n (k – 1) +1

Pohon Binary

K=2 Jumlah NullLink = n (k – 1) +1

= n (2 - 1) +1

= n + 1

berapa besar penghematan memory bila dirubah ke binary…gambar diatas?.

Kalau ada 3 pohon kemudian disatukan menjadi 1 pohon.

A

B C D

E F G H I J

A

B

E C

D F G

H

I

J

A E G

Page 89: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 13

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

B C D

F H I

A

B E

C

D

F G

H

I

Page 90: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 14

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Moh. Sjukani, Struktur Data [Algoritma & Struktur Data 2] dengan C, C++, Mitra Wacana Media,

Jakarta, 2008.

Tri Daryanto, Modul Algoritma Pemrograman dan Struktur Data, Universitas Mercu Buana,

Jakarta.

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta,

2004

Page 91: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

09 87007 Fajar Masya

Abstract Kompetensi

3. Balancing Binary Search Tree Mengetahui apa yang dimaksud

Page 92: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

4. Height Balanced Tree 5. Bound Balanced Tree

dengan Height Balanced Tree dan Bound Balanced Tree dan contohnya

BALANCING BINARY SEARCH TREE

BALANCED BINARY TREE (POHON BINER SEIMBANG)

Pohon Biner Seimbang atau Berimbang adalah pohon biner yang ketinggian subpohon

kiri dan subpohon kanan untuk setiap setiap simpul, paling banyak berselisih 1. Dengan

demikian, pohon biner complete dan almost complete adalah pohon berimbang, dan pohon

miring (skewed) dengan ketinggian (depth) lebih besar dari 1, adalah pohon biner tak

seimbang.

Contoh pohon biner berimbang (balanced) dan pohon biner tidak berimbang (unbalanced) :

root

Gambar 1. Balanced Binary Tree

root

A

B C

D E F G

H I J K

A

B C

D E F

Page 93: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Gambar 2. Unbalanced Binary Tree

root

Gambar 3. Unbalanced Binary Tree

HEIGHT BALANCED TREE (POHON KETINGGIAN SEIMBANG)

Pohon binar yang mempunyai sifat bahwa ketinggian subpohon kiri dan subpohon kanan

dari pohon tersebut berbeda paling banyak 1, disebut Pohon Ketinggian Seimbang atau Height

Balanced Tree (HBT).

Contoh :

HBT Bukan HBT

B C

A

B

D

C

E

F

L H I J K M

A

B C

E F G

J K

A

Page 94: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

KETINGGIAN MINIMUM DAN MAKSIMUM POHON BINAR

Jika banyaknya simpul = N, maka :

1. Ketinggian Minimum adalah : Hmin = INT(2log N) + 1

2. Ketinggian Maksimum adalah : N

Contoh : untuk N = 8

Ketinggian Minimum adalah : Hmin = INT(2log N) + 1

= INT(2log 8) + 1

= INT(2log 23) + 1

= INT(3) + 1

= 3 + 1

= 4

Ketinggian Maksimum adalah : 8

PENYAJIAN POHON BINAR DALAM MEMORI

Penyajian pohon binar dalam memori dengan dua cara, yaitu :

1. Penyajian Kait (link)

2. Penyajian Sequential.

1. PENYAJIAN KAIT

Kalau tidak dinyatakan lain, suatu pohon binar T akan disimpan dalam memori secara

penyajian kait. Penyajian ini menggunakan tiga array sejajar INFO, LEFT dan RIGHT, serta

variabel penuding ROOT.

Masing-masing simpul N dari pohon T berkorespondensi dengan suatu lokasi K, sedemikan

sehingga :

Page 95: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

(1) INFO(K) berisi data pada simpul N.

(2) LEFT(K) berisi lokasi dari anak kiri simpul N.

(3) RIGHT(K) berisi lokasi dari anak kanan simpul N.

Contoh : Pohon Binar T

A B C D E G H F J K L Skema Penyajian Kait dari pohon binar T

Root

A

B C

x D x E x x G x H

Page 96: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

x F x J x x K x x L x

Root Avail 2 10 INFO LEFT RIGHT

1 L 0 0

2 A 7 5

3 8

4 G 0 0

5 C 4 17

6 13

7 B 16 12

8 6

9 F 0 0

10 3

11 J 1 0

12 E 9 0

13 15

14 19

15 18

16 D 0 0

17 H 11 20

18 14

19 0

20 K 0 0

2. PENYAJIAN SEQUENTIAL

Penyajian pada pohon binar T ini hanya menggunakan sebuah array linear tunggal TREE

sebagai berikut :

Page 97: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

1. Akar R dari pohon T tersimpan sebagai TREE[1]

2. Jika simpul N menduduki TREE[K] maka anak kirinya tersimpan dalam TREE[2*K] dan anak

kanannya dalam TREE[2*K+1]

Contoh :

45

22 77 11 30 90

15 25 88 TREE

1 45

2 22

3 77

4 11

5 30

6

7 90

8

9 15

10 25

11

12

13

14 88

15

.

.

.

29

Dapat dilihat bahwa penyajian membutuhkan 14 lokasi dalam array TREE, meskipun T hanya

mempunyai 9 simpul. Kenyataannya, bila kita memasukkan elemen nol sebagai suksesor dari

simpul terminal, dibutuhkan TREE[29] untuk suksesor kanan dari TREE[14].

Page 98: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

PENYAJIAN POHON UMUM SECARA POHON BINAR

Kita dapat menyajikan pohon umum secara pohon binar dengan algoritma sebagai berikut :

1. Tambahkan ruas baru yang menghubungkan 2 simpul bersaudara yang berdampingan, lalu

kita hapus ruas dari simpul ayah ke anak, kecuali ruas ke simpul anak paling kiri.

2. Rotasikan sebesar 45 , searah putaran jarum jam terhadap pohon hasil langkah pertama.

Contoh Pohon Umum

A B C D E F G H I J

K L Langkah Pertama

A B C D

Page 99: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

E F G H I J K L Langkah kedua

A B E C F D G H K I L J

Page 100: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

NOTASI PREFIX, INFIX DAN POSTFIX SERTA TRAVERSAL POHON

Traversal adalah proses kunjungan dalam pohon, dengan setiap Simpul hanya dikunjungi tepat

satu kali. Tiga kegiatan yang terdapat dalam traversal pohon binar adalah :

1. Mengunjungi simpul akar (root)

2. Melakukan traversal subpohon kiri, dan

3. Melakukan traversal subpohon kanan

Terdapat tiga macam traversal pohon, yaitu :

1. Traversal Pre-order, dilakukan berturut-turut :

a. Kunjungi simpul akar

b. Lakukan traversal subpohon kiri

c. Lakukukan traversal subpohon kanan

2. Traversal In-order, dilakukan berturut-turut :

a. Lakukan traversal subpohon kiri

b. Kunjungi simpul akar

c. Lakukan traversal subpohon kanan

3. Traversal Post-order, dilakukan berturut-turut :

a. Lakukan traversal subpohon kiri

b. Lakukan traversal subpohon kanan

c. Kunjungi simpul akar

Contoh :

F Untai yang dihasilkan secara Pre-order FDBACEG D G B E A C

Page 101: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

F Untai yang dihasilkan secara In-order ABCDEFG D G B E A C F Untai yang dihasilkan secara Post-order ACBEDGF D G B E A C

Page 102: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

LATIHAN :

1. Dari gambar pohon biner di bawah ini buatlah kunjungan secara pre-order, in-order dan post-

order :

a.

b.

23

21

18

10

5 14 25

C

F

B

D

A

G

Page 103: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 13

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Moh. Sjukani, Struktur Data [Algoritma & Struktur Data 2] dengan C, C++, Mitra Wacana Media,

Jakarta, 2008.

Tri Daryanto, Modul Algoritma Pemrograman dan Struktur Data, Universitas Mercu Buana,

Jakarta.

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta,

2004

Page 104: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

10 87007 Team Dosen

Abstract Kompetensi

6. Sequential Search Memahami bagaimana sistem

Page 105: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

7. Binary Search Tree

Pencarian data

BINARY SEARCH TREE

BINARY SEARCH TREE adalah Binary tree dengan sifat bahwa :

semua left child harus lebih kecil daripada right child dan parentnya.

Juga semua right child harus lebih besar daripada left child dan parentnya.

Binary search tree dibuat untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan

dalam searching atau pencarian node tertentu dalam binary tree.

Contoh binary search tree umum :

Pada dasarnya operasi dalam binary search tree sama dengan binary tree biasa, kecuali

pada operasi insert, update dan delete.

~ OPERASI INSERT

Pada binary search tree, insert dilakukan setelah ditemukan lokasi yang tepat (lokasi tidak

ditentukan oleh user sendiri).

Misalnya anda diminta memasukkan angka-angka berikut ini ke dalam suatu binary search

tree. Angka-angka tersebut adalah 12, 15, 13, 9, 5, 11, 20

Algoritma dari insert ini adalah :

1. Masukkan sebuah huruf, angka pertama yang masuk akan menjadi root.

2. Kemudian masukkan angka berikutnya ke dalam tree tersebut.

3. Bandingkan angka tersebut dengan angka yang menjadi root, apabila angkanya lebih

besar dari root maka letaknya ada di sebelah kanan. Kalau angkanya lebih kecil, maka

letaknya di sebelah kiri root.

10 23

5 14 21 25

18

Page 106: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

4. Untuk sub root atau child, caranya juga sama dengan langkah 3.

Implementasi dari algoritma di atas dapat dilihat pada ilustrasi gambar berikut ini ;

1. Insert angka 12

Masukkan angka 12 ke dalam tree. Karena tree masih kosong maka otomatis angka 12

menjadi root.

2. Insert angka 15

Karena angka 15 lebih besar dari angka 12, maka sesuai dengan aturan yang ada

dalam binary search tree, angka 15 ini berada di sebelah kanan angka 12.

3. Insert angka13

Karena angka 13 yang dimasukkan lebih besar dari angka 12, maka sesuai dengan

aturan yang berlaku, angka 13 ini harus berada di sebelah kanan angka 12. Kemudian

karena disebelah kanan angka 12 sudah ada angka 15, maka angka 13 ini harus

dibandingkan lagi dengan angka 15. Karena angka 13 lebih kecil dari angka 15, maka

posisinya ada disebelah kiri angka 15.

4. Insert angka 9

Karena angka 9 yang dimasukkan lebih kecil dari angka 12, maka sesuai dengan

aturan yang berlaku angka 9 ini harus berada di sebelah kiri angka 12.

12

12

15

15

12

13

12

Page 107: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

5. Insert angka 5

Karena angka 5 lebih kecil dari angka 12, maka sesuai aturan yang berlaku angka 5 ini

harus berada di sebelah kiri angka 12. Kemudian karena di sebelah kiri angka 12 sudah

ada angka 9, maka angka 5 ini harus dibandingkan lagi dengan angka 9. Karena angka

5 lebih kecil dari angka 9, maka posisinya ada di sebelah kiri angka 9.

6. Insert angka 11

Karena angka 11 lebih kecil dari angka 12, maka sesuai dengan aturan yang berlaku

angka 11 ini harus berada di sebelah kiri angka 12. Kemudian karena di sebelah kiri

angka 12 sudah ada angka 9, maka angka 11 ini harus dibandingkan lagi dengan

angka 9. Karena angka 11 lebih besar dari angka 9, maka posisinya ada di sebelah

kanan angka 9.

15

13

9

15

13

12

9

5

15

13

12

9

5 11

Page 108: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

7. Insert angka 20

Karena angka 20 lebih besar dari angka 12, maka sesuai dengan aturan yang berlaku

angka 20 ini harus berada di sebelah kanan angka 12. Kemudian karena di sebelah

kanan angka 12 sudah ada angka 15, maka angka 20 ini harus dibandingkan lagi

dengan angka 15. Karena angka 20 lebih besar dari angka 15, maka posisinya ada di

sebelah kanan angka 15.

~ OPERASI UPDATE

Seperti pada binary tree biasa, namun disini update akan berpengaruh pada posisi node

selanjutnya. Bila setelah diupdate mengakibatkan tree tersebut bukan Binary Search Tree

lagi, maka harus dilakukan perubahan pada tree dengan melakukan rotasi supaya tetap

menjadi Binary Search Tree.

~ OPERASI DELETE

Delete dilakukan setelah ditemukan lokasi yang tepat. (lokasi tidak ditentukan oleh user

sendiri). Misalnya dari angka-angka berikut ini dan sesuai dengan permasalahan pada

operasi insert yaitu 12, 15, 13, 9, 5, 11, 20. Anda diminta untuk menghapus angka 5, 20, 12,

9 dan 15.

Adapun algoritma dari delete ini adalah :

1. Tentukan angka yang akan dihapus.

2. Kalau angka tersebut merupakan leaf, maka bisa langsung dihapus.

15

13

12

9

5 11 20

Page 109: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

3. Kalau angka yang dihapus mempunyai 1 atau lebih cabang, maka posisi angka yang

dihapus dapat digantikan pada angka yang merupakan leaf baik itu berada pada sub tree

kiri atau kanan.

Implementasi dari algoritma di atas dapat dilihat pada ilustrasi gambar berikut ini :

1. Delete angka 5

Karena angka 5 merupakan leaf, maka angka 5 ini langsung dapat dihapus.

2. Delete angka 20

Karena angka 20 ini juga termasuk leaf, maka angka ini juga bisa segera dihapus.

3. Delete angka 12

Karena angka 12 ini mempunyai 2 anak cabang, maka untuk menggantikan angka 12

yang dihapus dapat menggunakan angka yang ada di sebelah kiri subtree bagian kanan

yaitu angka 13.

15

13

9

12

11 20

15

13

9

12

11

15

13

9

11

Page 110: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

4. Delete angka 9

Karena angka 9 mempunyai 1 cabang di sebelah kiri, maka angka 11 yang merupakan

cabang dari 9 dapat menggantikan angka 9 yang dihapus.

5. Delete angka 15

Karena angka 15 merupakan leaf, maka angka ini dapat segera dihapus.

LATIHAN :

Buatlah algoritma dan program untuk memasukkan node baru ke dalam pohon dengan

menggunakan prosedure pre-order, in-order, dan post-order

Algoritma :

1. Tentukan deklarasi struktur untuk menampung elemen yang akan dimasukkan pada

tree.

2. Deklarasikan node baru.

3. Tentukan fungsi pre-order pada tree.

4. Tentukan fungsi in-order pada tree.

5. Tentukan fungsi post-order pada tree.

6. Fungsi pre-order adalah sebagai berikut :

void preOrder(POKOK *T)

{

if(!PokokKosong(T)) {

15

13

11

13

9

Page 111: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

printf("%c ", T->data);

preOrder(T->left);

preOrder(T->right);

}

}

7. Fungsi in-order pada tree adalah sebagai berikut :

void inOrder(POKOK *T)

{

if(!PokokKosong(T)) {

inOrder(T->left);

printf("%c ", T->data);

inOrder(T->right);

}

}

8. Fungsi post-order pada tree adalah sebagai berikut :

void postOrder(POKOK *T)

{

if(!PokokKosong(T)) {

postOrder(T->left);

postOrder(T->right);

printf("%c ", T->data);

}

}

9. Masukkan node ke dalam tree.

10. Jika ingin ditampilkan secara pre-order lakukan langkah 6.

11. Jika ingin ditampilkan secara in-order lakukan langkah 7.

12. Jika ingin ditampilkan secara post-order lakukan langkah 8.

13. Selesai.

Page 112: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Implementasi algoritma di atas pada program adalah sebagai berikut :

Page 113: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Page 114: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Bila Program dijalankan, hasilnya adalah :

Gambar pohon binernya adalah :

L

D

E

M

I O

Page 115: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Moh. Sjukani, Struktur Data [Algoritma & Struktur Data 2] dengan C, C++, Mitra Wacana Media,

Jakarta, 2008.

Tri Daryanto, Modul Algoritma Pemrograman dan Struktur Data, Universitas Mercu Buana,

Jakarta.

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta,

2004

Page 116: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

11 87007 Team Dosen

Abstract Kompetensi Heap Sort, Merge Sort, Dan Radix Sort

Memahami Algoritma Heap, Merge dan Radix Sort dan menerapkannya

Page 117: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

kedalam bahasa pemrograman.

METODE SORT LANJUTAN

A. Merge Sort

Sort ini digunakan untuk jumlah data yang besar, dengan membagi-bagi menjadi sub

bagian-sub bagian mulai dari sedikit elemen hingga keseluruhan elemen tersebut menjadi

data yang sudah urut. Sortir ini digunakan jika kapasitas memori tidak sanggup untuk

menampung seluruh data yang akan disortir.

Contoh 14 elemen berikut akan disortir:

66, 33, 40, 22, 55, 88, 60, 11, 80, 20, 50, 44, 77, 30

Langkah 1 : data dibagi menjadi sub-sub yang tiap subnya berisi 2 elemen yang kemudian

disortir hasilnya :

33 , 66 22 , 40 55 , 88 11 , 60 20 , 80 44 , 50 30 , 70

Langkah 2 : gabungkan 2 sub bagian sebelumnya menjadi 1 sub bagian kemudian disortir

hasilnya :

22, 33, 40, 66 11, 55, 60, 88 22, 44, 50, 80 30, 70

Langkah 3 : Lakukan seperti langkah 2 hingga seluruh sub bagian menjadi 1 subbagian.

11, 22, 33, 40, 55, 60, 66, 88 20, 30, 44, 50, 77, 80

Hasil Akhir : 11, 20, 22, 30, 33, 40, 44, 50, 55, 60, 66, 77, 80, 88

B. Heap Sort : Aplikasi dari Binary Tree

Heap sort merupakan teknik sortir yang memanfaatkan prinsip pohon Heap. Pohon heap

adalah pohon biner complete dimana nilai yang terkandung dalam simpul ayah lebih besar atau

Page 118: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

lebih kecil dari nilai kedua buah simpul anaknya, sedangkan simpul anak cabang kiri bisa lebih

besar, lebih kecil atau sama dengan nilai simpul anak cabang kanan. Pohon biner complete

adalah pohon biner yang nomor simpulnya urut continue, tidak ada yang terputus.

Maxheap adalah penyortiran dari besar ke kecil (Descending). Minheap adalah

penyortiran dari kecil ke besar (ascending). Untuk melakukan penyortiran ini maka langkah

pertama yang dilakukan adalah membentuk pohon heap.

Pembentukan pohon heap dilakukan dengan langkah-langkah :

20. Ikuti bentuk complete binary tree ( pohon biner lengkap)

21. Ayah harus memiliki nilai lebih besar atau sama dengan anak-anaknya (untuk

maxheap), ayah harus memiliki nilai lebih kecil atau sama dengan anak-anaknya

(untuk minheap).

Pada contoh ini akan dibuat pohon maxheap dengan elemen-elemen :

44 30 50 22 60 55 77 55

44 44 50 30 30 44 a. elemen 44 b. elemen 30 c. elemen 50 50 60 60 30 44 50 44 50 55 22 22 30 22 30 44 d. elemen 22 e. elemen 60 f. elemen 55 77 77 50 60 55 60 22 30 44 55 50 30 44 55

Page 119: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

22

g. elemen 77 h. elemen 55

Penulisan hasil sortir mengikuti langkah-langkah penghapusan elemen sebagai berikut :

1. Hapus akarnya (Root)

2. Letakkan elemen terakhir di posisi akarnya (root)

3. Lakukan tindakan atas elemen tersebut seperti langkah-langkah pembuatan pohon

heap.

4. Lakukan Langkah 1 hingga pohon menjadi kosong (empty tree)

Perhatikan gambar dibawah ini bagaimana setelah elemen 77 (root) dihapus atau dijadikan

elemen awal dari hasil sortir

22

55 60

50 30 44 55

a. penghapusan elemen 77 , maka elemen 22 jadi root

60

55 22

50 30 44 55

b. elemen 22 mengarah keanak kanan

60

55 55

50 30 44 22

Page 120: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

c. elemen 22 mengarah keanak kanan

( fase 1 )

3 gambar diatas pembentukan pohon heap kembali setelah elemen 77 dihilangkan.

Untuk fase 2 elemen 60 sebagai akar akan dijadikan hasil, sehingga elemen elemen hasil

sortirnya menjadi 77, 66 dan seterusnya. Berikut gambar heap pada akhir fase 2 hingga fase 7

(akhir).

55

55 44

50 30 22

a. pohon heap pada akhir fase 2 55

50 44

22 30

b. pohon heap pada akhir fase 3

50

30 44

22 c. pohon heap pada akhir fase 4

50

Page 121: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

30 22

d. pohon heap pada akhir fase 5

30

22

e. pohon heap pada akhir fase 6 22

f. pohon heap pada akhir fase 7

sehingga diperoleh urutan : 77 60 55 55 50 44 30 22 C. Radix Sort

Radix adalah dasar atau basis (base) bilangan. Bilangan yang kita gunakan sehari hari

adalah bilangan decimal yaitu bilangan dengan dasar 10 (sepuluh). Dengan demikian,

dikatakan, bilangan decimal radixnya = 10, karena mengenal 10 macam notasi atau simbol atau

angka, yaitu 0 sampai dengan 9.

Contoh sebuah bilangan decimal

Bilangan yang dicontohkan diatas, terdiri dari 4 angka atau 4 digit, ada angka satuan

(setiap satu satuan bernilai 1 ), ada angka puluhan (setiap satu satuan bernilai 10 ), angka

ratusan dan angka ribuan. Bilangan diatas bernilai : “ 2 ribu 4 ratus 7 puluh 5 “.

Radix Sort adalah sort yang dilakukan dengan cara mengelompokkan nilai-nilai, bukan

membandingkan nilai besar atau kecil. Nilai-nilai dikelompokkan secara bertahap, dimana

setiap tahap nilai-nilai dikelompokkan berdasarkan nilai setiap posisi angka, satuan, puluhan

ratusan dan seterusnya.

Ilustrasi proses Radix Sort :

Misal data yang ingin disort (tentunya dalam array satu dimensi) sebagai berikut :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

25 172 38 165 32 725 15 214 56 77 5 42 321 45 11

Dari semua nilai diatas, nilai yang terbesar adalah : 725.

Karena bilangan terbesar terdiri dari 3 angka, maka pengelompokan dilakukan 3 tahap.

Tahap – 1.

2 4 7 5 1000 100 10 1

Page 122: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Nilai-nilai dikelompokkan berdasarkan angka satuan yang sama, sehingga terlihat kelompok

sebagai berikut :

Angka Kelompok nilai yang angka satuannya sama

Ratusan

0

1 321 11

2 172 32 42

3

4 214

5 25 165 725 15 5 45

6 56

7 77

8 38

9

Kemudian dijadikan satu kembali kedalam array menjadi :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

321 11 172 32 42 214 25 165 725 15 5 45 56 77 38

Tahap – 2.

Hasil pengelompokan Tahap-1, berdasarkan angka satuan didapat :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

321 11 172 32 42 214 25 165 725 15 5 45 56 77 38

Nilai-nilai ini kemudian dikelompokkan berdasarkan nilai angka puluhan, sehingga didapat

kelompok sebagai berikut :

Angka Kelompok nilai yang angka puluhannya sama

Ratusan

0 05

1 11 214 15

2 321 25 725

3 32 38

4 42 45

5 56

6 165

7 172 77

8

9

Kemudian dijadikan satu kembali kedalam array menjadi :

Page 123: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

5 11 214 15 321 25 725 32 38 42 45 56 165 172 77

Tahap – 3.

Hasil pengelompokan Tahap-2, berdasarkan angka puluhan diatas, dikelompokkan lagi

berdasarkan angka nilai ratusan, sehingga didapat kelompok sebagai berikut :

Angka Kelompok nilai yang angka ratusannya sama

Ratusan

0 005 011 015 025 032 038 042 045 056 077

1 165 172

2 214

3 321

4

5

6

7 725

8

9

Kemudian dijadikan satu kembali kedalam array menjadi :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

5 11 15 25 32 38 42 45 56 77 165 172 214 321 725

Hasil akhir sudah urut menaik

ALGORITMA RADIX SORT

Ada beberapa macam algoritma untuk Radix Sort yang akan ditunjukkan berikut ini.

Cara ini yang paling mudah dipahami. Cara ini menggunakan array dua dimensi untuk

menempatkan nilai-nilai yang sama untuk radix tertentu ( satuan, puluhan, ratusan dan

seterusnya).

Misalkan data yang akan di sort berada dalam array int A[15] sebagai berikut :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

A 321 11 172 32 42 214 25 165 725 15 5 45 56 77 38

Disiapkan array 2 dimensi int B[10][15] dan mengisinya dengan nilai awal sebagai berikut :

Page 124: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

B 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

6 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

Disini nilai awal yang diisikan ke setiap elemen array adalah : -1.

Sebenarnya nilai yang dipilih tidak harus bernilai –1, dapat menggunakan nilai berapa saja,

asal dipastikan tidak sama dengan salah satu nilai yang disort. Angka yang terbesar adalah

725, yang terdiri dari 3 angka, sehingga prosesnya terdiri dari 3 tahap.

TAHAP-1.

Menyalin isi array A ke array dua dimensi B, dengan menempatkan nilai satuan pada baris

yang sama. Nilai satuan 1 berada di baris no. 1, nilai satuan 2 berada di baris no.2 dan

seterusnya, sehingga hasilnya terlihat sebagai berikut :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

1 321 11 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

2 172 32 42 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

B 4 214 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

5 25 165 725 15 5 45 -1 -1 -1 -1 -1 -1 -1 -1 -1

6 56 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

7 77 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

8 38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

Kemudian isi array dua dimensi B ini disalin kembali ke array satu dimensi A sehingga hasilnya

menjadi sebagai berikut :

Catatan : Jangan lupa, setelah isi array dua dimensi B disalin kembali ke array satu dimensi A, maka

seluruh isi elemen array dua dimensi B diisi dengan : -1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Page 125: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

A 321 11 172 32 42 214 25 165 725 15 5 45 56 77 38

TAHAP-2.

Mengulang kembali proses seperti pada Tahap-1, dengan menya;in isi array A ke array B

dengan pengelompokan berdasarkan nilai puluhan, sehingga didapat hasil sebagai berikut :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

A 321 11 172 32 42 214 25 165 725 15 5 45 56 77 38

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

0 05 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

1 11 214 15 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

2 321 25 725 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

3 32 38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

B 4 42 45 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

5 56 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

6 165 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

7 172 77 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

Salin kembali ke array satu dimensi A

0

1 2

3

4

5

6

7

8

9

10

11

12

13

14

5 11 214 15 321 25 725 32 38 42 45 56 165 172 77

TAHAP-3.

Mengulang kembali proses seperti pada Tahap-2, dengan menyalin isi array A ke array B

dengan pengelompokan berdasarkan nilai ratusan, sehingga didapat hasil sebagai berikut :

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

A 321 11 172 32 42 214 25 165 725 15 5 45 56 77 38

Pengelompokan berdasarkan angka ratusan

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

0 005 011 015 025 032 038 042 045 056 077 -1 -1 -1 -1 -1

1 165 172 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

2 214 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

3 321 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

B 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

Pengelompokan berdasarkan angka puluhan

Page 126: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

6 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

7 725 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

Salin kembali ke array satu dimensi A

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

5 11 15 25 32 38 42 45 56 77 165 172 214 321 725

Didapat hasil akhir yang urut menaik

Page 127: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.

Moh. Sjukani, Struktur Data [Algoritma & Struktur Data 2] dengan C, C++, Mitra Wacana Media,

Jakarta, 2008.

Tri Daryanto, Modul Algoritma Pemrograman dan Struktur Data, Universitas Mercu Buana,

Jakarta.

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta,

2004

Page 128: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

12 87007 Team Dosen

Abstract Kompetensi

8. Dasar Graph Mengetahui macam-macam

Page 129: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

9. Graph Berarah 10. Representasi Graph

Graph dan penerapannya

GRAPH (GRAF)

Graf termasuk struktur non linier. Graf adalah kumpulan titik yang tidak dihubungkan

maupun dihubungkan dengan garis. Seberapa besar titik itu digambarkan ataupun seberapa

panjang garis yang menghubungkan titik-titik itu tidak dipermasalahkan.

Titik dalam graf disebut simpul, vertex, node, atau point, dan kumpulan titik disebut

dengan vertices (nodes atau points). Garis yang menghubungkan vertex disebut dengan edge

dan kumpulan garis yang ada di graf disebut dengan edges.

Himpunan V (Vertex) yang elemennya disebut simpul (atau point atau node atau titik)

Himpunan E (Edge) yang merupakan pasangan tak urut dari simpul, anggotanya disebut

ruas (rusuk atau sisi)

Notasi : G(V,E)

Dimana : G = Graph

V = simpul atau vertex, atau node, atau titik.

E = Busur atau Edge, atau arc

Contoh sebuah graf : v2 e3 e1

v3

e4 v1 e2 e5 e7

v4 v5

e6

v4 v5

Simpul = Titik, Node atau Vertex

Istilah Vertex (dilambangkan dengan V)

Diilustrasikan dengan lingkaran

B

A

C

D E

Page 130: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

V = { v1 , v2 , v3 , v4 , v5 } dibaca : V terdiri dari v1 , v2 , v3 , v4 ,v5

Dalam matematik : V adalah himpunan dengan anggota v1 , v2 , v3 , v4 ,v5

Busur = Arc, Edge

Istilah Edge dilambangkan dengan E

E = { e1 , e2 , e3 , e4 , e5 , e6 , e7 }

Busur adalah 2 buah simpul yang berpasangan. Untuk menyatakan sebuah busur yang

merupakan pasangan simpul v1 dan v2 biasanya ditulis sebagai berikut :

ev1,v2 atau e1,2 atau (1,2)

Sebuah graf mungkin hanya terdiri dari satu simpul (gambar 1.). sebuah graf belum tentu

semua simpulnya terhubung dengan busur (gambar 2). Dalam sebuah graf mungkin saja ada

simpul yang tak terhubung dengan simpul lainnya oleh busur (gambar 3). Dalam sebuah graf

kemungkinan semua simpul saling berhubungan (gambar 4).

Gambar 1.

Gambar 2.

Gambar 3.

Gambar 4.

1. Graf Tak Berarah dan Graf Berarah

Dilihat dari bentuk busur (urutan penyebutan pasangan 2 buah simpul), graf dapat dibedakan

menjadi 2 macam :

A. Graf Tak Berarah (Undirected Graf atau Non Directed Graf)

Contoh : v2 e3 e1

v3

e4 v1 e2 e5 e7

v4 v5

e6

v4 v5

B

A

C

D E

Page 131: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Pada graf Tak Berarah :

urutan simpul dalam sebuah busur tidak dipentingkan. Busur e1 dapat disebut busur

A,B atau B,A.

Identik dengan sebuah jalan yang menghubungkan dua buah titik, yang dapat dilalui

dari dua arah.

Pada gambar diatas terlihat bahwa dari A dapat ke B, dan dari B dapat ke A melalui

jalan yang sama.

B. Graf Berarah (Directed Graf atau sering ditulis Digraf)

Contoh : v2 e8 e9 e1 e3

v3

e4 v1 e2 e5 e7

v4 v5

e6

v4 v5

Pada Graf Berarah :

Urutan Simpul mempunyai arti.

Pada gambar di atas terlihat busur A,B adalah busur e1. Sedangkan busur B,A adalah

busur e8.

Identik dengan : kalau dari A ke B hanya dapat menggunakan jalan e1, sedangkan dari

B ke A hanya menggunakan jalan e8.

Pada gambar juga terlihat tidak ada jalan langsung dari simpul D ke simpul A.

2. GRAF BERBOBOT (WEIGHTED GRAPH)

Apabila setiap busur mempunyai sebuah nilai yang menyatakan hubungan antara dua

buah simpul, maka busur tersebut dikatakan mempunyai bobot, dan graf disebut graf berbobot

(Weighted Graph).

B

A

C

D E

Page 132: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Bobot sebuah busur dapat menyatakan panjang sebuah jalan antara dua buah titik, atau

jumlah rata-rata kendaraan perhari yang melalui sebuah jalan atau mungkin saja selisih nilai

antara dua buah simpul dan sebagainya.

3. GRAF SEDERHANA (SIMPLE GRAPH) dan

GRAF TAK SEDERHANA (COMPLEX GRAPH)

Graf sederhana adalah graf yang mempunyai busur (hubungan antara dua buah simpul)

paling banyak hanya satu ‘macam’. Contoh-contoh gambar graf di atas adalah contoh graf

sederhana, baik berarah atau tidak berarah, berbobot atau tak berbobot.

Apabila dalam suatu graf ada paling sedikit dua buah simpul yang mempunyai

hubungan lebih dari satu macam, atau ada busur yang membentuk loop (busur yang keluar

dari dan masuk ke simpul yang sama), atau yang menyatakan hubungan di dalam simpul itu

sendiri, maka graf tersebut dikatakan graf tidak sederhana (complex graph), atau sering juga

disebut multi graph.

Contoh graf tidak sederhana

Gambar 5.

Gambar 6.

Gambar 7.

4. SUB GRAF

Contoh Graf Berbobot Tak Berarah :

3 5

12 8 6 4 3

Contoh Graf Berbobot Berarah :

7 4 5 3

12 6 4 8

v4 v5

3

B

A

C

D E

B

A

C

D E

Page 133: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Sub graf adalah bagian dari graf. Bahkan graf itu sendiri merupakan sub graf dari dirinya

sendiri.

Contoh :

gambar 4a. Graf G

gambar 4b. Graf G1. Sub graf dari graf G

gambar 4c. Graf G2.

Sub graf dari graf G1, juga merupakan sub graf

dari graf G

gambar 4d. Graf G3

gambar 4e. Graf G4

gambar 4f. Graf G5

B

A

C

E

B

A

C

E

B

A

C

D E

B

A

C

D E

B

A C

D E

B

A

C

D E

Page 134: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

G2 dan G3 merupakan subgraf yang membentuk struktur pohon sehingga disebut Spanning

Tree. Spanning Tree adalah sub graph yang membentuk pohon dengan jumlah simpul sama

dengan yang dimiliki oleh graf aslinya. Tree adalah graf tak berarah terhubung yang tidak

mengandung sirkuit.

G4 dan G5 juga merupakan sub graf dengan jumlah simpul yang lebih sedikit dari jumlah

simpul graf aslinya. Dari gambar di atas terlihat bahwa :

1. Jumlah simpul suatu sub graf mungkin sama atau mungkin juga lebih sedikit dari jumlah

simpul graf aslinya. Secara matematik dinyatakan : V’ V

2. Jumlah busur suatu sub graf selalu lebih sedikit dari jumlah busur graf aslinya. Secara

matematik dinyatakan : E’ E

5. FULL CONNECTED GRAPH (Graf Terhubung Penuh)

Suatu Graf disebut full connected graf apabila setiap simpul dalam graf tersebut saling

berhubungan. Pada full connected grapf berlaku :

dimana : n = jumlah simpul, dan m = jumlah busur

Contoh : Gambar 5. Full Connected graf

Jumlah simpul (n) = 5, Maka jumlah busur (m) = 5(5-1)/2=10

6. REPRESENTASI GRAPH

Dalam pemrograman, agar data yang ada dalam graf dapat diolah, maka graf harus

dinyatakan dalam suatu struktur data yang dapat mewakili graf tersebut. Dalam hal ini graf perlu

dipresentasikan kedalam bentuk array dua dimensi yang sering juga disebut matrix, atau

direpresentasikan dalam bentuk linked-list. Bentuk mana yang dipilih, biasanya tergantung

kepada efisiensi dan kemudahan dalam membuat program. Berikut ini beberapa bentuk

representasi graph :

I. Representasi graf dalam bentuk matrix:

B

A C

D E

m = n ( n – 1 ) / 2

Page 135: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

1. Adjacency Matrix

2. Inverse Adjacency Matrix (hanya untuk Graf berarah)

3. Incidence Matrix

4. Vector Matrix

II. Representasi graf dalam bentuk Linked List:

1. Adjacency List

2. Inverse Adjacency List (Hanya untuk Graf Berarah)

6.1. Representasi Graf dalam bentuk Matrix

6.1.1. Adjacency Matrix Graf Tak Berarah (Undirected Graf)

Gambar 12.6.1. Graf G

Adjacency Matrix dari graf di atas adalah :

A 0

B 1

C 2

D 3

E 4

A 0 0 1 0 1 0

B 1 1 0 1 0 1

C 2 0 1 0 1 1

D 3 1 0 1 0 1

E 4 0 1 1 1 0

sumbu symetris

Setiap elemen matrix diisi dengan angka 0 atau angka 1.

Angka 1, menyatakan ada hubungan (ada busur) atau adjacent antara dua buah simpul.

B

A

C

D E

Page 136: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Contoh angka 1 pada elemen (1,4) menyatakan ada hubungan antara simpul B dan simpul

E.

Matrix yang terbentuk adalah matrix bujur sangkar n * n, dimana n = jumlah simpul yang

ada dalam graf tersebut. Matrix ini menyatakan hubungan antara simpul satu dengan

simpul lainnya (simpul-simpul yang adjacent).

Matrix yang terbentuk adalah matrix symetris dengan sumbu symetris adalah diagonal dari

titik kiri atas ke titik kanan bawah. Terlihat bagian matrix sebelah atas sumbu symetris

sama dengan bagian matrix sebelah bawah sumbu symetris.

Data yang terdapat dalam baris maupun kolom, dapat menyatakan degree sebuah simpul.

Contoh : Baris D (baris 3) maupun Kolom D (kolom 3) jumlah angka 1 = 3.

Representasi Adjacency Matrix dalam bahasa C/C++

Untuk menyatakan simpul-simpul dibuatkan sebuah array yang berisi nama atau identitas

simpul : Char NmS [5] = ‘ABCDE’

Untuk merepresentasikan graf menjadi adjacency matrix dibuat instruksi sbb:

Int A[5] [5] = { 0,1,0,1,0, 1,0,1,0,1, 0,1,0,1,1, 1,0,1,0,1, 0,1,1,1,0 } ;

Jika ingin menggunakan tipe karakter (char), dapat ditulis sebagai berikut :

char A[5] [5] = { “01010” , “10101”, “01011”, “10101”, “01110” } ;

6.1.2. Adjacency Matrix Graf Berarah (Directed Graph)

Contoh :

B

A

C

D E

Page 137: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Gambar 6.1.2 Graf Berarah

Adjacency Matrix dari graf berarah di atas adalah :

ke

A 0

B 1

C 2

D 3

E 4

dari A 0 0 1 0 1 0 dari simpul A ada 2 b usur yang keluar, satu menuju simpul B dan 1 lagi menuju simpul D.

B 1 1 0 1 0 1

C 2 0 1 0 1 1

D 3 0 0 1 0 1

E 4 0 0 0 0 0 Tidak ada busur yang keluar dari simpul E.

Matrix yang terbentuk adalah matrix bujur sangkar n * n, dimana n = jumlah simpul yang

ada dalam graf tersebut. Matrix ini menyatakan hubungan satu arah antara simpul satu

dengan simpul lainnya.

Matrix yang terbentuk mungkin symetris, mungkin juga tidak symetris. Menjadi symetris jika

hubungan antara dua buah simpul (v1 dan v2) terdapat busur dari v1 ke v2 dan juga

terdapat busur dari v2 ke v1.

Data yang terdapat dalam suatu baris, dapat menyatakan outdegree simpul yang

bersangkutan. Contoh : jumlah elemen yang nilainya = 1 pada baris B ada 3 elemen, ini

menyatakan outdegree simpul B = 3. Jadi yang keluar dari simpul B ada 3 busur yaitu

menuju simpul A, simpul C dan simpul E (lihat elemen yang berisi nilai 1).

Data yang terdapat dalam suatu kolom, dapat menyatakan indegree simpul yang

bersangkutan. Contoh : Jumlah elemen yang nilainya = 1 pada kolom B (kolom 1) ada 2

elemen, ini menyatakan indegree simpul B = 2. Jadi yang menuju simpul B ada 2 busur

yaitu dari simpul A dan dari simpul C (lihat elemen yang berisi nilai 1).

6.1.3. Inverse Adjacency Matrix Graf Berarah (Directed Graph)

Contoh :

B

A

C

Page 138: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Gambar 6.1.3. Graf Berarah

Invers Adjacency Matrix graf berarah di atas adalah :

dari

A 0

B 1

C 2

D 3

E 4

menuju ke A 0 0 1 0 0 0 Hanya ada satu busur yang menuju simpul A yaitu dari simpul B.

B 1 1 0 1 0 0

C 2 0 1 0 1 0

D 3 1 0 1 0 0

E 4 0 1 1 1 0 ada 3 busur yang menuju simpul E yaitu dari simpul B, C dan D.

Perbedaan Inverse Adjacency Matrix dengan Adjacency Matrix adalah :

1. Data yang ada dalam suatu baris, menyatakan indegree, dan

2. Data yang ada dalam suatu kolom, menyatakan outdegree.

6.1.4. Adjacency Matrix Graf Berbobot Tak Berarah (Weighted Undirected Graph)

Contoh :

3 5

12 4 8 6

3

Gambar 6.1.4. Graf berbobot tak berarah

Adjacency Matrix Graf Berbobot Tak Berarah dari graf di atas adalah :

A 0

B 1

C 2

D 3

E 4

A 0 0 5 999 4 0 Simpul A berhubungan dengan simpul B dan simpul

D, masing-masing dengan bobot busur = 5 dan 4

B 1 5 0 3 999 12

D E

B

A

C

D E

Page 139: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

C 2 999 3 0 8 6

D 3 4 999 8 0 3

E 4 999 12 6 3 0

Nilai yang ada dalam tiap elemen matrix, menyatakan bobot busur yang menghubungkan

dua buah simpul yang bersangkutan.

Untuk dua buah simpul yang tidak berhubungan langsung atau tidak dihubungkan langsung

oleh sebuah busur, maka dianggap dihubungkan oleh sebuah busur yang nilai bobotnya

tidak terhingga.

Dalam pemrograman, untuk menyatakan nilai tak terhingga dapat digunakan sebuah nilai

yang dipastikan lebh besar dari total bobot seluruh busur yang ada atau yang mungkin ada.

Contoh : simpul A dan simpul C tidak berhubungan langsung melalui sebuah busur, maka

elemen matrix yang bersangkutan diisi dengan nilai 999. Karena nilai 999 dianggap cukup

mewakili nilai tak terhingga.

6.1.5. Incidence Matrix Graf Tak Berarah

Contoh : v2 e3 e1

v3

e4 v1 e2 e5 e7

v4 v5

e6

v4 v5

gambar 12.6.1.5 Graf tak berarah

Incidence Matrix dari graf di atas adalah :

e1 0

e2 1

e3 2

e4 3

e5 4

e6 5

e7 6

A 0 1 1 0 0 0 0 0 Matrix n * m

B

A

C

D E

Page 140: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 13

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

B 1 1 0 1 1 0 0 0 n = jumlah simpul,

C 2 0 0 1 0 1 0 1 m = jumlah busur

D 3 0 1 0 0 1 1 0

E 4 0 0 0 1 0 1 1

Incidence matrix ini dengan ukuran n * m merepresentasikan hubungan antara simpul

dengan busur.

Simpul yang dihubungkan oleh busur e2 adalah simpul A dan D. Kolom suatu incidence

matrix memperlihatkan hubungan antara dua buah simpul (hanya 2 buah simpul).

Sehingga dalam suatu kolom selalu ada dua angka ‘1’.

Busur yang ada hubungan dengan simpul B adalah busur : e1, e3 dan e4. Dalam baris B

terdapat 3 buah angka ‘1’. Artinya: dari simpul B keluar 3 buah busur yaitu e1, e3 dan e4.

6.1.6. Vector Matrix Graph Tak Berarah

Contoh : v2 e3 e1

v3

e4 v1 e2 e5 e7

v4 v5

e6

v4 v5

gambar 12.6.1.6. Graf tak berarah

Vector Matrix dari graf di atas adalah :

B

A

C

D E

Page 141: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 14

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

e 0

e 1

e 2

e 3

A 0 1 2 0 0

B 1 1 3 4 0

C 2 3 5 7 0 Simpul C berhubungan dengan busur : e3 , e5 dan e7

D 3 2 5 6 0

E 4 4 6 7 1

Vector matrix merepresentasikan hubungan simpul dan busur dengan cara lain, yang

berbeda dengan Incidence matrix.

Ukuran matrixnya : n * (n-1)

Dengan n = jumlah simpul, dan

(n-1) = jumlah maksimum busur yang mungkin incidence dengan

sebuah simpul

Contoh soal :

1. Sebuah graf dengan 4 buah simpul.

Ditanya : a. Berapa maksimum jumlah busur.

b. Berapa minimum jumlah busur.

Jawab :

a. maksimum jumlah busur = 6 (sama dengan jumlah busur pada full connected)

b. minimum jumlah simpul = 3

Maksimum jumlah busur = 6

minimum jumlah busur = 3

Minimum jumlah busur = 3

Minimum jumlah busur = 3

2. Sebuah graf full connected dengan 4 simpul, berapa jumlah busur yang ada?

Jawab : Jumlah busur = n(n-1)=(4*(4-1))/2=6

3. Sebuah graf dengan n simpul

a. berapa maksimum jumlah busur ? jawab : ½ * n * (n-1)

Page 142: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 15

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

b. Berapa minimum jumlah busur ? jawab : n-1

Soal Latihan :

1. Gambarkan Adjacency Matrix Graf berikut ini :

a.

b.

2. Gambarkan graf yang adjacency matrixnya diberikan sebagai berikut :

A 0

B 1

C 2

D 3

E 4

A 0 0 1 1 1 0

B 1 1 0 1 0 1

C 2 1 1 0 1 0

D 3 1 0 1 0 1

E 4 0 1 0 1 0

(a)

A 0

B 1

C 2

D 3

E 4

A 0 0 1 1 0 0

B 1 0 0 1 0 1

C 2 1 1 0 1 0

B

A

C

D E

B

A C

D E

Page 143: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 16

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

D 3 1 0 1 0 1

E 4 0 0 0 1 0

(b)

Daftar Pustaka

Moh. Sjukani, Struktur Data [Algoritma & Struktur Data 2] dengan C, C++, Mitra Wacana Media,

Jakarta, 2008.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung.

Page 144: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

13 87007 Team Dosen

Abstract Kompetensi

11. Representasi Graph Mengetahui macam-macam

Page 145: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Graph dan penerapannya

REPRESENTASI GRAF DALAM BENTUK

LINKED LIST

REPRESENTASI GRAF DALAM BENTUK LINKED LIST

1. Adjacency List Graf Tak Berarah

Contoh : e3 e1

e4 v1 e2 e5 e6

v4 v5

e7

gambar 1. Graf tak berarah

Adjacency List Graf tak Berarah Digambarkan Secara Sederhana

FIRST

A

B

C

D

E

Gambar 2. Adjacency List digambarkan secara sederhana

B

A

C

D E

B D 0

A C E

B D E

A C E

B C D

0

0

0

0

Page 146: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Graf pada gambar 1 jika ingin direpresentasikan dalam bentuk linked list dapat diilustrasikan

secara sederhana seperti pada gambar 2, terlihat :

Ada 5 buah simpul A, B, C, D, dan E yang dibariskan dari atas ke bawah .

Kemudian dari masing-masing simpul ‘keluar’ pointer ke arah kanan yang menunjuk

simpul-simpul lain.

Contoh : simpul A menunjuk simpul B dan simpul D.

Gambar 2 hanya sebagai ilustrasi hubungan simpul-simpul secara konsep. Hubungan

sebenarnya yang dinyatakan dalam sebuah program dapat dilihat pada gambar 13.

FIRST FIRST PEdge

PVertex PVertex dua simpul ini dinamai : Simpul Edge

Gambar 3 a. Gambar 3 b. Simpul Vertex left info right

Gambar 3 c. Struktur Simpul

Instruksi membuat struktur simpul :

A A e1 e2 0

B B

C C

D D

0 E 0 E

Page 147: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Struct tipeS {

Struct tipeS *Left;

Int INFO;

Struct tipeS *Right;

}

Struct tipeS *FIRST, *PVertex, *PEdge

Pada adjacency List kita perlu membedakan antara Simpul-Vertex dan Simpul-Edge.

Simpul-Vertex untuk menyatakan simpul atau Vertex, dan simpul-Edge untuk menyatakan

hubungan antar simpul yang biasa disebut busur.

Struktur keduanya bisa sama, bisa juga tidak sama, tergantung kebutuhan.

Pada contoh terlihat struktur simpul dibuat terdiri dari 3 elemen. Satu elemen untuk info,

dan 2 elemen untuk pointer. Pointer disebelah kiri disebut pointer left, pointer disebelah

kanan disebut Pointer Right.

Jika simpul dianggap sebagai Simpul-Vertex, maka Pointer Left digunakan untuk menunjuk

simpul berikutnya dalam untaian simpul-simpul yang ada, atau diisi NULL jika sudah tidak

ada simpul yang perlu ditunjuk. Sedangkan Pointer Right digunakan untuk menunjuk

Simpul-Edge yang pertama.

Jika simpul dianggap sebagai Simpul-Edge, maka Pointer Left digunakan untuk menunjuk

simpul-Vertex asal, dan Pointer Right digunakan untuk menunjuk Simpul Edge berikutnya

jika masih ada, atau diisi NULL jika tak ada lagi simpul busur yang ditunjuk.

Linked List Graf Berbobot Tak Berarah digambarkan secara Lengkap

PVertex PEdge

A e1 e2 0

B e1 e3 e4 0

C e3 e5 e6 0

Page 148: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

D e2 e5 e7 0

0 E e4 e6 e7 0

Gambar 4. Linked-List Graf Tak Berarah

12. Adjacency List Graf Berbobot Tak Berarah

Adjacency List Graf Tak Berarah sama dengan Adjacency List Graf Berarah dimana

arah busurnya selalu berpasangan. Jika ada busur dari A ke B, harus ada juga busur

dari B ke A.

Contoh : 3 5

12 2 8 2

v4 v5

7

gambar 5a. Graf tak berarah

Adjacency List Graf Berbobot Tak Berarah Digambarkan Secara Sederhana

FIRST

A

B

B

A

C

D E

B D 0

A C E 0

5

5

2

3 12

Page 149: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

C

D

E

Gambar 5b. Adjacency List digambarkan secara sederhana

Adjacency List Graf Berbobot Tak Berarah digambarkan secara Lengkap

PVertex PEdge

A 5 2 0

B 5 3 12 0

C 3 8 2 0

D 2 8 7 0

0 E 12 2 7 0

B D E

A C E

B C D

0

0

0

3

2

12

8

8

2

2

7

7

Page 150: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Gambar 6. Adjacency-List Graf Berbobot Tak Berarah

13. Adjacency List Graf Berarah dan Berbobot

Contoh : 6 3 5

14 2 12 9

v4 v5

7

Gambar 7a. Graf Berarah dan Berbobot

Adjacency List Graf Berarah dan Berbobot digambarkan secara sederhana :

FIRST

A

B

C

D

E

Gambar 7b. Adjacency List Graf Berarah dan Berbobot

Graf di atas jika ingin direpresentasikan dalam bentuk adjacency list dapat diilustrasikan

secara sederhana pada gambar 7b. Ilustrasi sebenarnya dalam pemrograman dapat

digambarkan sebagai berikut :

B

A

C

D E

B D 0

A C

C

C E

B 0

0

0

5

6

2

9

12

14

3

7

Page 151: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Adjacency List Graf Berarah dan Berbobot digambarkan secara Lengkap

PVertex PEdge

A 5 2 0

B 6 3 0

C 9

D 12 7 0

0 E 14 0

Gambar 8. Adjacency List Graf Berarah dan Berbobot

14. Inverse Adjacency List Graf Berarah dan Berbobot

Contoh : 6 3 5

14 2 12 9

v4 v5

7

Gambar 8a. Graf Berarah dan Berbobot

Inverse Adjacency List Graf Berarah dan Berbobot digambarkan secara sederhana :

FIRST

B

A

C

D E

Page 152: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

A

B

C

D

E

Gambar 8b. Inverse Adjacency List Graf Berarah dan Berbobot

Dalam Inverse Adjacency list graf berarah, ditunjukkan simpul apa saja yang menunjuk

simpul tertentu.

Dari gambar diatas terlihat pointer yang menuju atau menunjuk Simpul-B adalah berasal

dari Simpul A dengan bobot 5 dan dari simpul-E dengan bobot 14.

Walaupun arah panahnya dari B ke A, tetapi maksudnya untuk menyatakan bahwa : dari

simpul mana saja, terdapat busur yang menunjuk B.

Soal latihan :

1. Gambarkan Adjacency List untuk graf gambar berikut :

v4

B 0

A E

C

A

C

0

0

0

6

5

3

2

9

14

4

D 12

4 0

D 7 0

B

A

C

D E

Page 153: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

2. Gambarkan Adjacency List sebuah graf jika Adjacency Matrix graf tersebut digambarkan

sebagai berikut :

A 0

B 1

C 2

D 3

E 4

A 0 0 1 0 1 0

B 1 1 0 1 0 1

C 2 0 1 0 1 1

D 3 1 0 1 0 1

E 4 0 1 1 1 0

Buat (Gambar) Graf nya dulu

3. Gambarkan Adjacency List sebuah graf berarah jika Inverse Adjacency Matrix graf

tersebut digambarkan sebagai berikut : (buat grafnya dulu)

A 0

B 1

C 2

D 3

E 4

A 0 0 1 0 1 0

B 1 1 0 1 0 1

C 2 0 1 0 1 1

D 3 0 0 1 0 1

E 4 0 0 0 0 0

4. Gambarkan sebuah graf tak berarah jika Adjacency List graf tersebut digambarkan

sebagai berikut :

FIRST

A

B

C

B D 0

A C E

B D E

0

0

Page 154: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

D

E

5. Gambarkan sebuah graf berarah jika Inverse Adjacency List graf tersebut digambarkan

sebagai berikut : (Gambarkan grafnya)

FIRST

A

B

C

D

E

A C E

B C D 0

0

B

A E

C

A

C

0

0

6

5

3

2

9

14

4

D 12

4 0

D 7 0

C 0 14

4

Page 155: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Moh. Sjukani, Struktur Data [Algoritma & Struktur Data 2] dengan C, C++, Mitra Wacana Media,

Jakarta, 2008.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung.

Page 156: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 1

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Algoritma Pemrograman dan Struktur Data

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

14 87007 Team Dosen

Abstract Kompetensi

15. Graph traversal Mengetahui macam-macam

Page 157: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 2

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

16. Path terpendek 17. Spanning Tree

Graph dan penerapannya

PENELUSURAN GRAF

(GRAPH TRAVERSAL )

Penelusuran graf adalah mengunjungi (visit) atau membaca graf menurut arah tertentu,

simpul per simpul, mulai dari simpul tertentu sampai semua simpul dikunjungi tanpa ada simpul

yang dikunjungi atau dibaca lebih dari satu kali.

Berdasarkan arah penelusuran ada dua macam penelusuran yaitu :

1. Depth First Search (DFS), penelusuran dengan mendahulukan arah kedalaman

2. Breadth First Search (BFS), penelusuran dengan mendahulukan arah melebar

2. Depth First Search.

Depth First Search adalah penelusuran graph yang arah penelusurannya mendahulukan ke

arah kedalaman graph tersebut yang dapat diterangkan sebagai berikut :

Pandanglah Graph pada Gambar-1a dengan adjacency matrixnya seperti Gambar-1b, yang

akan ditelusuri secara DFS mulai dari simpul A, sehingga hasil penelusurannya seperti pada

Gambar-1c.

A

B C

E F

H

D G

Gambar-1a 1a

Graph G

0 1 1 0 0

1 0 0 1 1

1 0 0 0 0

0 1 0 0 0

0 1 0 0 0

A 0

B 1

C 2

D 3

E 4

A

0

B

1

C

2

D

3

E

4

0 0

0 0

1 1

0 0

0 0

F

5

G

6

0

0

0

1

1

0 0 1 0 1

0 0 1 0 0

0 0 0 1 1

F 5

G 6

H 7

0 0

0 0

1 1

1

1

0

H

7

Gambar 1b. Adjacency Matriks

Page 158: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 3

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Urutan kunjungan simpul bila dimulai dari Simpul-A adalah : A B D H E F C G yang bila

digambarkan akan menghasilkan spanning tree seperti pada Gambar-1c yang disebut DFS

Spanning Tree.

Proses Penelusuran :

Dalam proses penelusuran, akan terlihat pada suatu titik, ‘terpaksa’ dilakukan langkah

kembali ke simpul sebelumnya.

Dalam pemrograman, untuk dapat kembali ke posisi sebelumnya, biasanya diperlukan

stack. Pada penelusuran ini kita menggunakan stack S, dengan jumlah elemen tidak

kurang dari jumlah simpul graf yang ditelusuri.

Pada awal penelusuran, Top yang menunjuk stack S dibuat = -1

1. Misal penelusuran dimulai dari simpul

A. Ambil A. Simpan (Push) A ke stack

S. Cetak A

3

2

1

Top A 0

S

2. A berhubungan dengan simpul B dan

C. Ambil (kunjungi) simpul B, dan

simpan B ke stack. Cetak B

B

A

S

3. B berhubungan dengan simpul A, D

A

B C

E F

H

D G

Gambar-1c Hasil penelusuran

secara DFS Graph G

A

A

B

A

Page 159: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 4

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

dan E. A sudah dikunjungi. Tersisa D

dan E. Kunjungi D. Cetak D

D

B

A

S

4. D berhubungan dengan B dan H. B

sudah dikunjungi sehingga tersisa H.

Kunjungi H. Cetak H. Isi stack

sekarang : ABDH

H

D

B

A

S

5. H berhubungan dengan D,E,F dan

G. D sudah dikunjungi. Tersisa E, F

dan G. Kunjungi E. Simpan E di

stack. Cetak E

E

H

D

B

A

S 6. E berhubungan dengan B dan H. B

dan H sudah dikunjungi. Terjadi

keadaan buntu, kembali ke simpul

sebelum E, yaitu H. Keluarkan E

dari stack. Simpan E di stack.

Cetak E

H

D

B

A

S

7. Kembali ke H. H berhubungan

dengan D, E, F dan G. D dan E

sudah dikunjungi. Tersisa F dan G.

B

D

A

B

D

H

A

B

D

H

E

A

B

D

H

E

A

B

Page 160: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 5

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Kunjungi F. Simpan F di stack.

Cetak F.

F

H

D

B

A

S

8. F berhubungan dengan H dan C. H

sudah dikunjungi. Tersisa C.

Kunjungi C. Simpan C di stack.

Cetak C.

C

F

H

D

B A

9. C berhubungan dengan A, F dan G.

A dan F sudah dikunjungi, tersisa G.

Ambil G. Simpan G di stack.

Cetak G.

G

C

F

H

D

B

A

S

10. G berhubungan dengan C dan H. C

dan H sudah dikunjungi, terjadi

keadaan buntu. Kembali ke simpul

sebelum G yaitu C.

C

F F

H H H

D D D

B B B

A A A

10 11 12

D

H

E F

B

D

H

E F

A

C

A

B

D

H

E F

C

G

Page 161: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 6

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

11. Sekarang berada di C. Disini juga

buntu. Kembali ke F.

12. Sekarang berada di F. Disini juga

buntu. Kembali ke H.

13. Sekarang berada di H. Disini juga

buntu. Kembali ke D.

14. Sekarang berada di D. Disini juga

buntu. Kembali ke B.

15. Sekarang berada di B. Disini juga

buntu. Kembali ke A.

16. Sekarang berada di A. Disini juga

buntu. Kalau kembali sampai simpul

pertama penelusuran dan ditemui

buntu, maka proses berakhir.

Kalau nilai Top kembali ke -1, maka

proses selesai.

D

B B

A A A

13 14 15

16

Top = -1

3. BREADTH FIRST SEARCH (BFS)

Breadth First Search adalah penelusuran graph yang arah penelusurannya mendahulukan

ke arah ‘lebar’ graph tersebut yang dapat diterangkan sebagai berikut :

Pandanglah Graph pada Gambar-2a dengan adjacency matrixnya seperti Gambar-2b, yang

akan ditelusuri secara DFS mulai dari simpul A, sehingga hasil penelusurannya seperti pada

Gambar-2c.

A

B C

E F

H

D G

Gambar-2a 2a

Graph G

0 1 1 0 0

1 0 0 1 1

1 0 0 0 0

0 1 0 0 0

0 1 0 0 0

A 0

B 1

C 2

D 3

E 4

A

0

B

1

C

2

D

3

E

4

0 0

0 0

1 1

0 0

0 0

F

5

G

6

0

0

0

1

1

0 0 1 0 1

0 0 1 0 0

0 0 0 1 1

F 5

G 6

H 7

0 0

0 0

1 1

1

1

0

H

7

Gambar 2b. Adjacency Matriks

Page 162: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 7

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Urutan kunjungan simpul bila dimulai dari Simpul-A adalah : A B C D E F G H yang bila

digambarkan akan menghasilkan spanning tree seperti pada Gambar-2c yang disebut BFS

Spanning Tree

Gambar 2c. Hasil penelusuran secara BFS graf G

Proses Penelusuran :

Dalam proses penelusuran, diperlukan sebuah array untuk antrian (queue) yang diberi nama Q

yang jumlah elemennya tidak kurang dari jumlah simpul. Antrian tersebut akan diisi dengan

simpul (dalam program digunakan nomor simpul) yang sudah dikunjungi. Berikut ini

diilustrasikan isi antrian sesuai dengan proses penelusuran.

0 1 2 3 4 5

Q A B C F = Front (depan) R = Rear (belakang

F R

Isi antrian Q di atas dinyatakan dengan huruf A, B, dan C dan seterusnya. Dalam program

bukan diisi huruf nama simpul, melainkan diisi nomor simbolik simpul : 0,1,2 dan seterusnya,

sesuai dengan index baris dan index kolom adjacency matrix, sehingga isi Q sebenarnya

adalah sebagi berikut :

0 1 2 3 4 5

Q 0 1 2 F = Front (depan) R = Rear (belakang

A

B C

D E G

H

F

Page 163: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 8

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

F R

Pada awal penelusuran, F dan R dibuat = -1 sebagai berikut :

0 1 2 3 4 5

Q A B C

F R

Proses penelusuran selengkapnya dapat diterangkan sebagai berikut :

1. Misal dimulai dari simpul A. Ambil A. Simpan A ke antrian Q. Pointer F dan R menunjuk A.

R

0 1 2 3 4 5 6 7

Q A

F

2. A berhubungan dengan simpul B dan C. Ambil(kunjungi) B dan C. Simpan ke dalam antrian. R menunjuk yang terakhir yaitu C.

R

0 1 2 3 4 5 6 7

Q A B C

F

3. Pointer F maju satu langkah, menunjuk B. B ada hubungan dengan D dan E. Simpan D dan E dalam antrian, dan pointer R menunjuk E

R

0 1 2 3 4 5 6 7

Q A B C D E

F

4. Pointer F maju satu langkah, menunjuk C. C ada hubungan dengan F dan G. Simpan F dan G dalam antrian, dan pointer R menunjuk G

R

0 1 2 3 4 5 6 7

Q A B C D E F G

F

5. Pointer F maju satu langkah, menunjuk D. D ada hubungan dengan H. Simpan H dalam antrian, dan

R

0 1 2 3 4 5 6 7

Q A B C D E F G H

A

A

B C

A

B

B

C

C

A

A

B C

D E

E D F G

D E F G

H

Page 164: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 9

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

pointer R menunjuk H

6. Jika pointer R sudah menunjuk ujung dari antrian, berarti proses sudah selesai.

F

LINTASAN TERPENDEK (SHORTEST PATH)

1. Mencari Lintasan Terpendek dengan Algoritma Dijkstra

Problem :

Ada 5 buah kota, 0,1,2,3,4 yang terhubung dengan jalan antar kota (dalam km) seperti

yang diilustrasikan dengan sebuah graf gambar 3a. dan Adjacency matrix graf tersebut

pada gambar 3b. berikut ini :

12

5 15 17

10 6

Gambar 3a. graf

0

1

2

3

4

0 0 12 5 999 17 Untuk 2 buah kota (simpul) yang tidak dihubungkan langsung oleh jalan (busur)

1 12 0 999 15 999 maka jaraknya dibuat dibuat nilai tak terhingga yang diwakili nilai 999

2 5 999 0 999 10

3 999 15 999 0 6

4 17 999 10 6 0

2

1

4

3

0

Page 165: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 10

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Gambar 3b. Adjacency Matrix

Untuk menghitung lintasan terpendek antara Kota no.0 ke Kota no.3 dengan menggunakan

Algoritma Dijsktra adalah sebagai berikut :

Ada 3 kemungkinan jalan dari kota 0 ke kota 3 yaitu :

17

6

a. 0 – 4 – 3 Jarak = 23

5

10 6

b. 0 – 2 – 4 – 3 Jarak = 21

12

15

c. 0 – 1 – 3

Jarak = 27

Kesimpulan :

Lintasan terpendek dari 0 ke 3 adalah 21 km, dengan lintasan : 0 – 2 – 4 – 3

2. Mencari Lintasan Terpendek dengan Algoritma Warshall

Algoritma Warshall ini tidak sekedar mencari lintasan terpendek antara 2 buah simpul

tertentu, tetapi langsung membuat tabel lintasan terpendek antar simpul.

Problem : Ada 5 buah kota 0,1,2,3,4 yang terhubung dengan jalan dengan jarak dalam km

seperti yang diilustrasikan dengan gambar graf 4a, dan Adjacency Matrix graf tersebut

digambarkan pada gambar 4b. berikut :

5 2 20 15

6 4

0

4

3

0

2

4

3

0

3

1

2

1

4

3

0

Page 166: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 11

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Gambar 4a. graf

0

1

2

3

4

0 0 5 2 999 15

1 5 0 999 20 999

2 2 999 0 999 6

3 999 20 999 0 4

4 15 999 6 4 0

Gambar 3b. Adjacency Matrix

0

1

2

3

4

0 0 5 2 12 15

1 5 0 7 17 13

2 2 7 0 10 6

3 12 17 10 0 4

4 8 13 6 4 0

Gambar 3c. Adjacency Matrix

Soal :

Gambarkan matrix lintasan terpendek, dan matrix yang menyatakan jalur yang

dilintasi dalam menempuh lintasan yang terpendek tersebut untuk graf yang

digambarkan pada gambar di bawah ini :

10 5

6 28 4

19

0

2

1

4

3

Page 167: etudematematika.files.wordpress.com€¦ · 2013 1 Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning Dosen MODUL PERKULIAHAN Algoritma Pemrograman

2013 12

Algoritma Pemrograman dan Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning

Team Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Bambang Wahyudi, Pengantar Struktur Data dan Algoritma, Andi Offset, Yogyakarta, 2004.

Moh. Sjukani, Struktur Data [Algoritma & Struktur Data 2] dengan C, C++, Mitra Wacana Media,

Jakarta, 2008.

Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika,

Bandung.