Algoritma Pemrograman dan Struktur Data

Ukuran: px
Mulai penontonan dengan halaman:

Download "Algoritma Pemrograman dan Struktur Data"

Transkripsi

1 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi bstract Kompetensi 1

2 Tipe-tipe data dan deklarasi data dalam bahasa pemrograman Memahami jenis-jenis data yang digunakan dalam algoritma 2

3 Pengenalan lgoritma 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 Perintah dalam bahasa mesin ini artinya sama dengan perintah assembly MP L, 0D yang artinya bandingkan nilai register L dengan 0D. MP 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. ahasa pemrograman ini menggunakan bahasa generasi ketiga atau disingkat 3GL, biasa juga disebut sebagai high-level language. ontoh dari bahasa ini adalah bahasa asic, Pascal,, ++, OOL, dsb. 3

4 ahasa 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 ); // ++ cout << Hallo << endl; // 2. lgoritma lgoritma 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 : 4

5 Luas = πr 2 Maka algoritma untuk menghitung luas lingkaran adalah : 1. Masukkan R 2. Pi = 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. erikutnya nilai Pi * R * R diberikan kepada variabel Luas. aris 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. aris terakhir menuliskan luas lingkaran tersebut. Urut-urutan atau sequence adalah rangkaian tindakan yang dilakukan secara berurut. ontoh algoritma yang diperlihatkan diatas menunjukkan program yang berurut. Untuk memudahkan memahami algoritma, diagram alur atau flow hart akan sangat membantu. ontoh dari diagram dari proses pencarian nilai lingkaran tersebut terdapat pada gambar 1. Mulai Masukkan r π = 3.14 Luas = π * r * r Tulis Luas 5 Selesai

6 Gambar 1. lgoritma Perhitungan Luas Lingkaran Komponen-komponen pada Flow hart Oval melambangkan Terminal, untuk menyatakan awal (Start) dan akhir (end,) hanya sebagai tanda, tidak melakukan Persegi Panjang melambangkan Process, untuk menyatakan assignment statement Jajaran genjang melambangkan I/O, Input/Output operation. untuk menyatakan proses baca (RED)dan proses tulis (WRITE) elah 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. iasa dipakai pada bahasa OOL, juga bahasa. all, Memanggil suatu subprogram (procedure, atau function) Lingkaran melambangkan Titik connector atau sambungan yang berada pada halaman yang sama 6

7 Titik connector yang berada pada halaman lain. Pseudocode adalah penulisan program dengan menggunakan bahasa yang kita pergunakan sehari hari. ahasa yang digunakan bisa saja bahasa Indonesia, ahasa Inggris, -like, Pascal-like ataupun bentuk bentuk yang lainnya. ontoh 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 papun 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. oolean d. Karakter 2. Jenis data campuran, yaitu : "String". 3.1 ilangan ulat atau Integer Suatu integer adalah anggota dari himpunan bilangan : 7

8 (..., -(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". ontoh dari unary operator adalah operator negasi. Operator ini berfungsi untuk mengubah tanda suatu operand. 3.2 ilangan 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). ilangan 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. ontoh : Di dalam sistim desimal, = * 106. Di sini adalah mantissa atau pecahan, sedangkan 6 adalah eksponennya. Secara umum suatu bilangan real X dituliskan M * RE 3.3 oolean 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:. Operator Logika, yaitu : NOT, ND dan OR. Operator OR akan menghasilkan nilai "true", jika salah satu atau kedua operand bernilai "true". Operator ND akan menghasilkan nilai "true", jika kedua operand bernilai "true".sedangkan operator NOT akan menghasilkan nilai "true", jika operand bernilai 8

9 "false", dan sebaliknya. Operator NOT merupakan "precedence" dari operator ND dan OR. Dalam suatu ekspresi yang tidak menggunakan tanda kurung, operator NOT harus dievaluasi sebelum operator ND dan OR..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". ontoh : Misal, diberikan himpunan alphabet = {, D, 1 }. String-string yang dapat dibentuk dari alphabet di atas antara lain adalah : 'D1', 'DD', 'DD', 'D1',...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 dinotasikan dengan V atau *. Jika suatu string dibentuk dari alphabet { 0, 1 }, maka string yang terbentuk disebut dengan "it String". Secara umum, suatu string S yang dibentuk dari himpunan alphabet, dituliskan : S = 'a1a2... an' di mana setiap karakter ai anggota untuk, 1 i N. Dalam suatu string terdapat 3 operasi utama, yaitu : 1. Length 2. oncatenation 3. Substring Latihan: 9

10 1. uat lgoritma Untuk menghitung nilai Jajarang genjang dan Segitiga, buat algoritma tersebut dalam bentuk flow chart dan juga dalam bentuk Pseudo code. 2. uat program dalam bahasa ++ untuk menampilkan Operasi ritmatika, Operasi Relasional, Operasi Logika, Operasi itwise dan Operasi Geser it Daftar Pustaka ndri Kristanto, lgoritma & Pemrograman dengan ++ Edisi 2, Graha Ilmu, Yogyakarta, udi Raharjo, Pemrograman ++, Informatika, andung, Teddy Marcus Zakaria dan gus Prijono, Konsep dan Implementasi Struktur Data, Informatika, andung, 2006 Thompson Susabda Ngoen, Pengantar lgoritma dengan ahasa, Salemba Teknika, Jakarta,

11 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi bstract Kompetensi Pengertian rray, Jenis rray, dan Mengerti dan Menjelaskan apa yang 1

12 lgoritma untuk mengakses rray. Pengertian Record dan Penggunaan Structure pada bahasa ++ dimaksud dengan rray dan Record serta Pendeklarasiannya dalam bahasa Pemrograman 2

13 rray 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. rray dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi. rray 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. rray rray 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. ontohnya : int Intrray[25]; Sebagai deklarasi sebuah array yang memiliki 25 alokasi data (elemen) dengan jenis data integer bernama Intrray. 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}; rray dapat menggunakan nama apapun (yang dapat digunakan dalam bahasa /++), selama tidak memiliki nama yang sama dengan variabel tunggal lain. Dalam bahasa /++, array dimulai dari 0. Jika merupakan array dengan jumlah elemen 10, maka variabelnya 3

14 adalah [0], [1],..., [9] Isi rray [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] indeks rray [0] bernilai 5 [4] bernilai -7 erapa nilai [6]? erapa nilai [9]? ontoh lain. 6. int angka[10]; mendeklarasikan sebuah variable bernama angka berupa array satu dimensi untuk menampung/ menyimpan sepuluh data bertipe integer Indeks = 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 aris = aris = aris = aris = char huruf[3][5][5]; mendeklarasikan sebuah variable bernama huruf berupa array tiga dimensi untuk menampung/ menyimpan tujuh puluh lima data bertipe char. 4

15 T = 0 T = 1 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 2.1 Mengisi Nilai Elemen rray 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) T = 2 erikut contoh pengisian array yang diinput langsung dari program (statik). rtinya user tidak dapat merubah isi elemen array kecuali merubah dari kode programnya. [0] = 100; /*Nilai elemen [0] adalah 100*/ [5] = 35; /*Nilai elemen [5] adalah 35 */ [0] = [5]; /*Nilai elemen [0] adalah 35 */ = -99; /* adalah variabel biasa, bukan array. bernilai -99 */ [5] = ; /*Nilai elemen [5] adalah -99. [0] tetap bernilai 35 */ erikut algoritma menampilkan elemen nilai array. Deklarasi int [3]; int = 35; Deskripsi Mulai [0] = 70; [1] = ; Print Isi nilai [0] adalah [0] ; 5

16 Print Isi nilai [1] adalah [1] ; Print Silakan user mengisi nilai [2]: Scan [2]; Print Isi nilai [2] adalah [2] ; Selesai Tampilan hasil yang diharapkan adalah sebagai berikut: 2.2 Inisialisasi rray 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}; ila 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. ila 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; } 6

17 /* 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]? */ erikut 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: 7

18 3. Record rray sangat seringkali digunakan bersamaan dengan struktur data lain, yaitu record (rekaman). Deklarasi typedef struct SISW long NIM; char Nama[25]; char Kota[30]; // deklarasi array berisi 2 record SISW; Deskripsi //menerima masukan user for (int i=0;i<2;i++){ Print "NIM: "; Scan [i].nim; Print "Nama: ";Scan [i].nama; Print "Kota: ";Scan [i].kota; //menampilkan isi for (int i=0;i<2;i++){ Print "Siswa ke-i "; Print [i].nama "("[i].nim")"; Print "dari "[i].kota"; Selesai 8

19 4. Latihan uatlah kode program di bawah ini dengan menggunakan bahasa pemrograman ++. Lalu kompilasi program tersebut, jalankan. pakah 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 aik ); elseif ((cukup >= baik) && (cukup >=kurang)) printf( \n Rata-ratanya ukup ); 9

20 elseif ((kurang >= cukup) && (kurang >= baik)) printf( \n Rata-ratanya Kurang ); return; }; main( ) { input_data( ); cari_rata2( ); output_data( ); } Daftar Pustaka ndri Kristanto, lgoritma & Pemrograman dengan ++ Edisi 2, Graha Ilmu, Yogyakarta, udi Raharjo, Pemrograman ++, Informatika, andung, Deitel & Deitel, How to Program 3rd Edition, Prentice Hall, New Jersey, 2001 Teddy Marcus Zakaria dan gus Prijono, Konsep dan Implementasi Struktur Data, Informatika, andung, Thompson Susabda Ngoen, Pengantar lgoritma dengan ahasa, Salemba Teknika, Jakarta,

21 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi 03 bstract Kompetensi 1

22 Pengertian Linked List dan Penyajian Linked List dalam memori Mampu Memahami dan Menjelaskan ara Kerja Linked List 2

23 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. lgoritma 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 ++ adalah sebagai berikut : 3

24 /*Program:link1.cpp */ #include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef struct nod { int data; struct nod *next; } NOD, *NODPTR; void iptasenarai (NODPTR *s) { *s = NULL; } NODPTR Nodaru(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 etaksenarai (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; iptasenarai(&pel); 4

25 n = Nodaru(55); SisipSenarai(&pel, n, NULL); n = Nodaru(75); SisipSenarai(&pel, n, NULL); etaksenarai(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 anyak fungsi pada pada linked list perlu untuk merubah pointer kepala. Dalam ++, anda juga dapat menyatakan parameterpointer sebagai argumen &. Untuk 5

26 melakukan ini bahasa ++, lewati pointer ke pointer kepala. Pointer ke pointer kadangkadang reference pointer langkah utama untuk teknik ini adalah: Merancang sebuah fungsi untuk mengambil pointer ke pointer kepala. Ini teknik standar yang digunakan dalam ++ 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 hangealler() { Struct node* head1 Struct node* head2 hangetonull (&head1); hangetonull (&head2); } Gambar di bawah ini menunjukan bagaimana pointer headref dalam hangetonull menunjukan ke head1 pada hange aller. hangealler () head1 hangeto Null (&head1) headref 6

27 Gambar 3.1 Pointer headref dalam hangetonull menunjuk ke head Membuat head list (kepala senarai) dengan perintah Push() ara termudah untuk membuat sebuah senarai (list) dengan menambah node pada akhir kepala (last head) adalah dengan push(). Perhatikan fungsi berikut ini : struct node* ddthead() { 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 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 7

28 Tail newnode 3 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. ara 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: 8 struct node* uildwidthspecialase (){ 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'

29 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* uildwidthlocalref(){ 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. ara kerja dari teknik ini adalah: Pada puncak putaran, lastptrref menunjuk pointer terakhir dalam list. Pada permulaaanya menunjuk ke head pointer itu sendiri. erikutnya 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. 9

30 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 1 2 lastptrref Gambar 3.3 Membuat referensi local 3. OPERSI DLM LINKED LIST Operasi yang ada pada linked list adalah Menambah Node dan juga menghapus node 3.1. Menambah Node aru 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. dapun prosedurnya ditunjukkan pada penggalan program berikut ini: void SLList :: ddnode() {Tail -> Next = new list; Tail=Tail ->Next; } Ilustrasi dari tahapan penambahan node dapat terlihat pada gambar

31 dding a Node Head efore Tail Step 1 Head New Node Tail Next Tail Next Step 2 Head NULL Gambar 3.4 menambah node baru dapun 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 Menghapus Node Untuk menghapus node, dapat dilihat pada penggalan program berikut ini : void SLList::DeleteNode(ListPtr corpse)) // <-- i though it was funny:) { ListPtr temp; if (corpse === Head) //case 1 corpse = Head {temp=head; 11

32 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; } urrentptr=head; //Reset the class tempptr } Daftar Pustaka ndri Kristanto, lgoritma & Pemrograman dengan ++ Edisi 2, Graha Ilmu, Yogyakarta, Moh. Sjukani, Struktur Data [ lgoritma & Struktur Data 2 ] dengan, ++, Mitra Wacana Media, Jakarta, Teddy Marcus Zakaria dan gus Prijono, Konsep dan Implementasi Struktur Data, Informatika, andung,

33 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi 04 bstract Kompetensi 1

34 Operasi dasar stack dan contoh aplikasinya. Deklarasi stack dalam bahasa pemrograman Mampu menjelaskan apa yang dimaksud dengan stack dan aplikasinya 2

35 STK 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: Keadaan mula-mula adalah kosong Setelah ditumpuk Secara sederhana tumpukan bisa diilustrasikan seperti gambar dibawah ini. Dari gambar dibawah ini kotak ada di atas kotak dan ada di bawah kotak. 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). max F top E D Gambar 2. Tumpukan dengan 6 elemen 3

36 Implementasi alternatif stack adalah: 1. List dengan pointer untuk variable-length stack (ukuran stack bervariasi) 2. rray 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 typedef struct stack // Mendefinisikan stack dengan menggunakan struct { int top; char data [15][20]; // menampung 15 data dengan jumlah string max 20 huruf }; 2. M endefi nisika 4

37 n max_stack untuk maksimum isi stack #define max_stack Membuat variable array sebagai implementasi stack stack tumpuk; 4. Mendeklarasikan operasi-operasi/fungsi yang dapat dilakukan stack. a. Push (menginputkan data pada stack) void push(char d[20]) { tumpuk.top++; strcpy(tumpuk.data[tumpuk.top],d); printf("data berhasil dimasukkan"); } b. Pop (mengambil data pada stack) void pop() { printf ("data %s terambil",tumpuk.data[tumpuk.top]); tumpuk.top--; } c. IsFull(mengecek apakah stack penuh) int isfull() { if (tumpuk.top==max_stack-1) return 1; else return 0; } d. isempty(mengecek apakah stack kosong) 5 int isempty() { if (tumpuk.top==-1) return 1; else return 0; }

38 e. clear (membersihkan seluruh isi stack) void clear() { tumpuk.top=-1; printf("semua data terhapus."); } f. print (mencetak seluruh isi stack) void print() { for (int i=tumpuk.top;i>=0;i--) printf ("%s\n",tumpuk.data[i]); } 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. lgoritma Operasi Push: If atas = maxelemen then penuh: true else penuh false tas atas + 1 Isi[tas] x Endif (Tumpukan sudah penuh) (Tumpukan masih kosong) 2.2. Operasi Pop dengan Single Stack 6

39 Operasi pop adalah operasi untuk menghapus elemen yang terletak pada posisi paling atas dari sebuah tumpukan. lgoritma Operasi Pop: If atas = 0 then (Tumpukan sudah kosong) else tas atas - 1 (hapus 1 elemen pada tumpukan) Endif 2.3. Double Stack Dengan rray 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. Stack Kosong 1 Top Max Stack 1 Kosong Stack 2 1 Top 1 Top 2 Max Gambar 3. Gambaran Perbandingan Single Stack dan Doube Stack Dengan rray 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. lgoritma Operasi Push pada double stack: 7

40 If not penuh then ase nostack of (Tumpukan masih kosong) 1 : top[1] top[1] : top[2] top[2] - 1 Endcase Stack[top[elemen]] elemen Endif lgoritma Operasi Pop pada double stack: If not kosong then (Tumpukan tidak kosong) Elemen stack[top[nostack]] ase nostack of 1 : top[1] top[1] : top[2] top[2] - 1 Endcase Endif 3. Pemanfaatan STK 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 : ( + D ) * ( E F ) Dari contoh di atas ( + D ) akan dikerjakan lebih dahulu, kemudian ( E F ) dan hasilnya akan dikalikan ara 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. 8

41 ontoh Notasi INFIX, PREFIX dan POSTFIX INFIX PREFIX POSTFIX ( + ) * ( - D ) * + D + D - * ( 6 2 ) * ( ) * * Program Konversi entuk INFIX ke bentuk POSTFIX /*Program:InfixPostfix.cpp */ #include <stdio.h> #include <conio.h> #include <ctype.h> char [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, Opraru; Top = -1; clrscr(); printf("rithmetic Statement : "); scanf("%s",); for (I=0; [I]!= '\0'; I++ ) { if (Operand([I])) printf("%c", [I]); else { if(operator([i])) { if(top==-1 S[Top] == '(' ) S[++Top] = [I]; else { OprStack = S[Top]; Opraru = [I]; if (Nilai(Opraru) > Nilai (OprStack)) S[++Top] = Opraru; Else 9

42 { while(nilai(oprstack) >= Nilai (Opraru) && Top > -1 && S[Top]!= '(' ) { printf("%c ", OprStack); OprStack = S[--Top]; } S[++Top] = Opraru; } } } else { if(operand([i])=='(') S[++Top]=[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); } 10

43 Daftar Pustaka ndri Kristanto, lgoritma & Pemrograman dengan ++ Edisi 2, Graha Ilmu, Yogyakarta, Moh. Sjukani, Struktur Data [ lgoritma & Struktur Data 2 ] dengan, ++, Mitra Wacana Media, Jakarta, Teddy Marcus Zakaria dan gus Prijono, Konsep dan Implementasi Struktur Data, Informatika, andung,

44 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi bstract Kompetensi 1

45 Definisi dan operasi dasar QUEUE. Penyajian QUEUE dalam rray Mengetahui cara kerja QUEUE dan menerapkannya 2

46 QUEUE (NTRIN) 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). ntrian (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. ontoh : antrian mobil saat membeli karcis di pintu jalan tol, antrian di bioskop dan sebagainya. 6. Operasi / Prosedur Standar pada QUEUE / NTRIN QUEUE merupakan struktur data dinamis, ketika program dijalankan, jumlah elemennya dapat berubah secara dinamis sesuai keperluan. erikut 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. 3

47 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. IMPLEMENTSI NTRIN DENGN RRY 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 D E F masuk gambar 1. ontoh antrian dengan 6 elemen belakang Gambar di atas menunjukkan contoh penyajian antrian menggunakan array. ntrian di atas berisi 6 elemen, yaitu,,, D, E dan F. Elemen 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 akan dihapus terlebih dahulu. Elemen terletak di bagian depan, kemudian disusul elemen 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 4

48 keluar D E F G H masuk belakang gambar 2. ontoh penambahan antrian dengan 2 elemen 1 menjadi : Gambar 3 menunjukkan antrian dengan penghapusan elemen dan, sehingga gambar depan keluar D E F G H masuk belakang gambar 3. ontoh 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 MXN 6 Typedef enum { NOT_OK, OK } Tboolean; Typedef struct { Titem array [MXN]; int first; int last; int number_of_items; } Tqueue Dengan deklarasi di atas, elemen antrian dinyatakan dalam tipe integer yang semuanya 5

49 terdapat dalam struktur. Variabel first menunjukkan posisi elemen pertama dalam array, dan variabel last menunjukkan posisi elemen terakhir dalam array. lgoritma 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 >= MXN) return (NOT_OK); else { Pqueue -> last++; if (Pqueue -> last > MXN -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); 6

50 } else { } *Pitem = Pqueue -> array[pqueue->first++]; if (Pqueue -> first > MXN -1) Pqueue -> first = 0; Pqueue -> number_of_items--; return (OK); Penggalan program di atas apabila dikelompokkan berdasarkan fungsinya adalah sebagai berikut : 1. Deklarasikan ntrian 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 >= MXN) return (NOT_OK); else { Pqueue -> last++; if (Pqueue -> last > MXN -1) Pqueue -> = 0; Pqueue -> array[pqueue->last] = item; Pqueue -> number_of_items++; return (OK); 7

51 } } 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 > MXN -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 : ntrian first = 1 last = 0 Gambar 4. ontoh deklarasi antrian dengan 6 ukuran Dari gambar 4 di atas last dibuat = 0 dan first dibuat = 1 serta antrian dikatakan kosong jika last < first. ntrian 8

52 6 5 4 D last = first = 1 Gambar 5. ontoh deklarasi antrian penambahan 4 buah elemen Dari gambar 5 di atas menunjukkan array dengan 6 elemen untuk menyajikan sebuah antrian (dalam hal ini MXN = 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 dan dihapus. Gambar 7 menunjukkan antrian baru setelah E dan F ditambahkan. anyaknya elemen dalam antrian adalah 6-3+1=4 elemen ntrian D last = 4 3 first = Gambar 6. ontoh deklarasi antrian penghapusan 2 buah elemen ntrian 6 F last = 6 9

53 5 E 4 D 3 first = Gambar 6. ontoh 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. IMPLEMENTSI NTRIN DENGN 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. pabila 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; 10

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

55 Daftar Pustaka ndri Kristanto, lgoritma & Pemrograman dengan ++ Edisi 2, Graha Ilmu, Yogyakarta, Moh. Sjukani, Struktur Data [ lgoritma & Struktur Data 2 ] dengan, ++, Mitra Wacana Media, Jakarta, Teddy Marcus Zakaria dan gus Prijono, Konsep dan Implementasi Struktur Data, Informatika, andung,

56 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi bstract Kompetensi ubble Sort, Selection Sort, Memahami Jenis-Jenis 1

57 Insertion Sort. Membuat lgoritma dan penerapannya ke dalam bahasa pemrograman Sorting Sederhana dan dapat membuat lgoritma dan program sorting. SORTING 1. Definisi Sorting Salah satu bagian penting dari struktur data adalah sorting atau pengurutan data. da banyak sekali lgoritma 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 : scending (naik, pengurutan dari karakter/angka kecil ke karakter/angka besar). Descending (turun, pengurutan dari karakter/angka besar ke karakter/angka kecil). ontoh : Data acak : Terurut scending : Terurut Descending : Metode Pengurutan Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam cara / metoda. eberapa metoda diantaranya : 15. ubble / Exchange Sort 16. Selection Sort 17. Insertion Sort 2.1 Metode ubble 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 2

58 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. ontoh 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: dapun langkah-langkah pengurutan adalah sebagai berikut : Langkah 1: Hasilnya adalah : Langkah 2 : Hasilnya adalah :

59 Langkah 3 : Hasilnya adalah : Langkah 4 : Langkah 5 : Hasilnya adalah : Untuk pengurutan data dari besar ke kecil adalah kebalikan dari proses di atas. lgoritma 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 ubble Sort dapat dilihat pada program berikut ini, program scending dengan menggunakan ubble Sort. #include <iostream.h> 4

60 #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. 5

61 Langkah-langkahnya adalah sebagai berikut : Langkah 1 : Posisi : Data : Pembanding Posisi 5 < < < < < < < 2 8 Tukar data pada posisi 1 dengan data posisi 8 Hasil Sementara : Langkah 2 : Posisi : Data : Pembanding Posisi 34 > > < < > > 5 8 Tukar data pada posisi 2 dengan data pada posisi 8 Hasil Sementara :

62 Langkah 3 : Posisi : Data : Pembanding Posisi 32 > < < > < 34 7 Tukar data pada posisi 3 dengan data pada posisi 7 Hasil Sementara : Langkah 4 : Posisi : Data : Pembanding Posisi 75 > > < 34 7 Tukar data pada posisi 5 dengan data pada posisi 7 Hasil Sementara : Langkah 5 : Posisi : Data : Pembanding Posisi 42 < > 34 8 Tukar data pada posisi 6 dengan data pada posisi 8 7

63 Hasil Sementara : Langkah 6 : Posisi : Data : Pembanding Posisi 75 > 42 8 Tukar data pada posisi 7 dengan data pada posisi 8 Hasil khir : Proses pengurutan data di atas memerlukan 6 kali perulangan. lgoritma 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 [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 ", [i]); } for (i=0; i<8-i; i++) { 8

64 } if ([j]<[pos]) { pos=j; } } if (pos!=i) { tampung=[pos]; [pos]=[i]; [i]=tampung; } printf("\n\nsetelah Sorting : \n"); for (i=0; i<8; i++) { printf("%i ", [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. ontoh : Langkah 1 : 3 dibandingkan dengan 8, karena 3 < 8 maka kedua elemen ditukar posisinya yang menghasilkan urutan Langkah 2 : 7 dibandingkan dengan 8, karena 7 < 8 maka 7 ditukar posisinya dengan 8 yang menghasilkan urutan Langkah 3 : 4 dibandingkan dengan 8, karena 4 < 8 maka tukar posisinya, hasil sementara adalah

65 Kemudian 4 dibandingkan dengan 7, karena 4 < 7 maka tukar posisinya, hasilnya adalah Kemudian 4 dibandingkan dengan 3, karena 4 > 3, maka posisinya tetap, hasil akhirnya adalah lgoritma 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 [5]={8,3,7,4},i,j,tampung; main() { clrscr(); printf("sebelum Sorting : \n"); for (i=0; i<=4; i++) { printf("%i ", [i]); } for (i=1; i<4; i++) { tampung=[i]; j=i-1; while ([j]>tampung && j>0) { [j+1] = [j]; j--; 10

66 } } [j+1]=tampung; } printf("\n\nsetelah Sorting : \n"); for (i=0; i<5; i++) { printf("%i ", [i]); } return 0; Daftar Pustaka ndri Kristanto, lgoritma & Pemrograman dengan ++ Edisi 2, Graha Ilmu, Yogyakarta, Teddy Marcus Zakaria dan gus Prijono, Konsep dan Implementasi Struktur Data, Informatika, andung, 2006 Thompson Susabda Ngoen, Pengantar lgoritma dengan ahasa, Salemba Teknika, Jakarta,

67 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi Fajar Masya bstract Kompetensi Latihan pemecahan masalah Mampu menerapkan Stack, QUEUE 1

68 Stack, QUEUE dan Sorting dan Sorting sederhana dalam solusi pemecahan masalah REVIEW dan Latihan Soal uatlah function pangkat dengan input a dan b untuk menghitung a^b. Function ini mengembalikan (return) hasil perhitungan kepada function yang memanggilnya. ontoh : 3^4 = 3 x 3 x 3 x 3 = 81 4^3= 4 x 4 x 4 = 64. ontoh odingnya: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> #include <string.h> int main () { int a,b,c,d ; printf("masukan ngka : ");scanf("%d", &a); printf("masukan ngka : ");scanf("%d", &b); d=1; c=1; while (d <= b){ d=d+1; c=c*a; } printf("\nnilai = %d",c); getch (); return 0; 2

69 } uatlah function faktorial dengan input bilangan bulat positif a. Function ini mengembalikan (return) hasil perhitungan kepada function yang memanggilnya. a! dibaca Faktorial dari a ontoh : 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 ngka : ");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; } uatlah program Penjumlahan 2 Matriks berukuran sama yang masing-masing berukuran tidak lebih dari 10 x 10 ode Programnya adalah : 3

70 # 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); 4

71 printf("\nhasil jumlah:\n"); cetak_matriks(mat_c, baris, kolom); fflush(stdin); getchar(); return 0; } uatlah algoritma dan program untuk menampilkan 10 bilangan secara menurun yaitu 10, 9, 8, 7,..., 1 dengan menggunakan linked list. lgoritma : 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 lgoritma 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 << " "; 5

72 } } head = head->next; return 0; uatlah algoritma dan program untuk memasukkan dan mengeluarkan data dalam antrian. lgoritma 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 Jika yang dimasukkan adalah angka 1, kerjakan langkah Jika yang dimasukkan adalah huruf x maka kerjakan langkah Selesai. ode Programnya adalah : #include <stdio.h> #include <conio.h> typedef char Titem; // The interface of queue #define MXN 5 typedef enum {NOT_OK, OK } Tboolean; typedef struct { Titem array [MXN]; int first; int last; int number_of_items; } Tqueue; void initialize_queue (Tqueue *Pqueue); Tboolean enqueue (Tqueue *p, Titem item); 6

73 Tboolean dequeue (Tqueue *p, Titem *Pitem); void print_queue(const Tqueue *Pqueue); // pplication #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 >= MXN) return (NOT_OK); else { Pqueue -> last++; 7

74 if (Pqueue -> last > MXN -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 > MXN -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>mxn-1) i= 0; } printf("\n\n"); } uatlah algoritma dan program untuk memasukkan 10 buah data dengan menggunakan metode bubble sort dan tampilkan data tersebut secara ascending. Input data terserah. lgoritma : 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. 8

75 //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 * rray size = 10" <<endl; cout<<"\ * Data Type = long"<<endl; gotoxy(1,24); cout<<" ************************************* "; gotoxy(1,25); cout<<" ************************************* "; gotoxy(1,10); cout<<" Enter the rray: "<<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 rray: "; 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; } 9

76 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; } } } } uatlah algoritma dan program untuk memasukkan 10 buah data dengan menggunakan metode selection sort dan tampilkan data tersebut secara ascending. Input data terserah. Daftar Pustaka ndri Kristanto, lgoritma & Pemrograman dengan ++ Edisi 2, Graha Ilmu, Yogyakarta, Teddy Marcus Zakaria dan gus Prijono, Konsep dan Implementasi Struktur Data, Informatika, andung, 2006 Thompson Susabda Ngoen, Pengantar lgoritma dengan ahasa, Salemba Teknika, Jakarta,

77 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi bstract Kompetensi 1. General Tree Menjelaskan jenis-jenis tree 1

78 2. inary Tree Dan penyelesaiannya STRUTURE 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 D 1 E F G H I J 2 K L M 3 kar dari struktur pohon ini adalah Satu simpul akan berisi : ~ Informasi ( misal,,, dst) ~ abang-cabang (Link) yang menghubungkan Kesimpul simpul yang lain. Simpul sebagai akar mempunyai 3 Link yang membentuk SUTREE,, D. Jumlah SUTREE dari satu simpul disebut : DERJT (DEGREE). 2

79 Derajat Simpul : = 3 = 2 = 1 G = 0 Simpul yang mempunyai derajat = 0 disebut : SIMPUL TERMINL atau DUN (LEF) ontoh 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) ontoh anak D adalah H, I, J Orangtua D adalah nak dari orang tua yang sama (saudara sekandung) disebut sibling misal H,I,J. DERJT (DEGREE) SUTU POHON dalah derajat maksimum dari suatu simpul dalam pohon. ontoh 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. ontoh nenek moyang dari M adalah, D dan H. KEDLMN (HEIGHT atau DEPTH) Kedalaman suatu pohon ditentukan oleh level maksimum dari simpul dalam pohon. ontoh kedalaman pohon dari gambar diatas adalah. HUTN (FOREST) dalah susunan dari beberapa pohon. ila akar dihilangkan maka akan diperoleh hutan dengan 3 pohon yaitu : (E(K,L),F) (G) D(H(M),I,J) da 2 cara untuk menyatakan struktur pohon yaitu : 3. Gambar 4. Daftar(List) 3

80 Pernyataan dengan Gambar adalah seperti terlihat pada Gambar diatas sedangkan kalau dengan List adalah sebagai berikut : (((E(K,L),F),(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 : JUMLH LINK = n. k JUMLH NULL-LINK = n( k - 1)+1 JUMLH NON ZERO LINK = n - 1 STRUKTUR NODE K-ary DT hild 1 hild-k Pohon 3 - ary : D E F G H I J Dari gambar diatas diket : n = 10, k = 3 Maka dapat dihitung : JUMLH LINK = n. k = = 30 JUMLH NULL LINK = n ( k 1 ) + 1 4

81 = 10( 3 1 ) + 1 = 21 JUMLH NON ZERO LINK = n 1 = 10 1 = 9 POHON INER (INRY TREE) Tipe yang sangat penting dari struktur data Dalam struktur pohon biner hanya dikenal SUTREE KIRI DN SUTREE KNN 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 G omplete inary Tree 5 D E

82 Pohon iner Penuh ( Full inary Tree) dalah pohon biner yang mempunyai simpul atau node lengkap dari level 1 sampai level ke I D E F G Full inary Tree Pohon iner Lengkap ( omplete inary Tree) dalah pohon biner yang mempunyai simpul dengan nomor urut 1 sampai dengan n. i = level Level nak terkiri menunjukkan anak Terkanan menujukkan 1 Jumlah simpul 1 jumlah max simpul i 1 i LEVEL NK TERKIRI NK TERKNN

83 No anak kiri (Left hild) = No. Parent * 2 No anak kanan (Right hild) = (No. Parent *2) + 1 No Parent = No hild 2 Pertanyaan 1. Pohon dengan simpul jumlah simpul = 273 merupakan lengkap atau penuh 2. erapa 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 dimana n = jumlah simpul ontoh bila n = 15 Maka kedalamannya minimal = 2 Log = Log Log 2 = 1.17 / = = 4 SKEWED TREE inary Tree yang semua nodenya (kecuali leaf/daun) hanya memiliki satu child. dalah Pohon biner yang miring kekiri atau kekanan, atau dengan kata lain pohon biner dengan subtree kiri kosong atau subtree kanan kosong. 7

84 Pohon iner seperti ini disimpan dalam bentuk rray sangat memboroskan D REPRESENTSINY sebagai berikut : D 9 Kosong sebanyak 7 Elemen 15 erdasarkan full binary tree, pohon jenis diatas memiliki banyak simpul kosong. Seharusnya dibawah, terdapat simpul anak yg selevel, namun hanya terdapat 1 simpul anak yaitu, dibawah, seharusnya terdapat 1 simpul anak, 2 simpul anak lainnya yang selevel atau 2 simpul anak dari simpul yg selevel dengan, 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 masingmasing simpul akan mempunyai 3 field yaitu : TU LHILD DT RHILD DT LHILD RHILD ontoh Representasi Link Pohon iner iasa 8

85 0 D 0 0 E 0 0 F 0 0 G 0 struct NM_SIMPUL { Tipe Data DT; Struct NM_SIMPUL *RHILD, *LHILD; }; Skewed Tree PENELUSURN POHON INER ( inary Tree Traversal ) da 3 macam Traversal : 5. Inorder Traversal 6. Preorder Traversal 7. Postorder Traversal 1. Inorder Traversal kan menghasilkan bentuk INFIX, entuknya : Operand1 Operator Operand2 + ontoh Tulislah hasil penelusuran pohon biner berikut ini bila ditelusuri secara INORDER. * 9

86 + Langkah-langkahnya : 1. Telusuri Subtree (sub pohon) Kiri 2. Proses Simpul kar 3. Telusuri Subtree(Sub pohon) Kanan maka akan diperoleh persamaan INORDERnya adalah: ( + ) * 2. Preorder Traversal kan menghasilkan bentuk PREFIX, entuknya Operator Operand1 Operand2 + ontoh Tulislah hasil penelusuran pohon biner berikut ini bila ditelusuri secara PREORDER. * + Langkah-langkahnya : 1. Proses Simpul kar 2. Telusuri Subtree(sub pohon) Kiri 3. Telusuri Subtree(Sub pohon) Kanan maka akan diperoleh persamaan PREORDERnya adalah: * + 3. Postorder Traversal kan menghasilkan bentuk POSTFIX, entuknya : Operand1 Operand2 Operator + 10

87 ontoh 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: + * SOL latihan untuk minggu depan 18. uat Persamaan INORDER, PREORDER, DN POST ORDER dari Tree erikut : - * / + - * D 19. Diket Persamaan POST ORDER : 7 E F G / * D E ** F / + 2 uat INORDER, PREORDER, dan buat Tree nya. Representasi Dari Pohon K-ry ke inary. 11

88 Pohon 3 ry D E F G H I J Ke binary 2 ray E F G D H I J Pohon K-ry Jumlah NullLink = n (k 1) +1 Pohon inary 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. 12 E G

89 D F H I E F G D H I 13

90 Daftar Pustaka Moh. Sjukani, Struktur Data [lgoritma & Struktur Data 2] dengan, ++, Mitra Wacana Media, Jakarta, Tri Daryanto, Modul lgoritma Pemrograman dan Struktur Data, Universitas Mercu uana, Jakarta. Thompson Susabda Ngoen, Pengantar lgoritma dengan ahasa, Salemba Teknika, Jakarta,

91 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi Fajar Masya bstract Kompetensi 3. alancing inary Search Tree Mengetahui apa yang dimaksud 1

92 4. Height alanced Tree 5. ound alanced Tree dengan Height alanced Tree dan ound alanced Tree dan contohnya LNING INRY SERH TREE LNED INRY TREE (POHON INER SEIMNG) Pohon iner Seimbang atau erimbang 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. ontoh pohon biner berimbang (balanced) dan pohon biner tidak berimbang (unbalanced) : root D E F G H I J K Gambar 1. alanced inary Tree root D E F 2

93 H I J K L M Gambar 2. Unbalanced inary Tree root E F G J K Gambar 3. Unbalanced inary Tree HEIGHT LNED TREE (POHON KETINGGIN SEIMNG) 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 alanced Tree (HT). ontoh : HT E ukan HT D 3 F

94 KETINGGIN MINIMUM DN MKSIMUM POHON INR Jika banyaknya simpul = N, maka : 1. Ketinggian Minimum adalah : H min = INT( 2 log N) Ketinggian Maksimum adalah : N ontoh : untuk N = 8 Ketinggian Minimum adalah : H min = INT( 2 log N) + 1 = INT( 2 log 8) + 1 = INT( 2 log 2 3 ) + 1 = INT(3) + 1 = = 4 Ketinggian Maksimum adalah : 8 PENYJIN POHON INR DLM MEMORI Penyajian pohon binar dalam memori dengan dua cara, yaitu : 1. Penyajian Kait (link) 2. Penyajian Sequential. 1. PENYJIN KIT 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 : 4

95 (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. ontoh : Pohon inar T D E G H F J K Skema Penyajian Kait dari pohon binar T L Root x D x E x x G x H 5

96 x F x J x x K x x L x Root vail 2 10 INFO LEFT RIGHT 1 L G F J E D H K PENYJIN SEQUENTIL Penyajian pada pohon binar T ini hanya menggunakan sebuah array linear tunggal TREE sebagai berikut : 6

97 1. kar 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] ontoh : TREE 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]. 7

98 PENYJIN POHON UMUM SER POHON INR 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. ontoh Pohon Umum D E F G H I J K L Langkah Pertama D 8

99 E F G H I J K L Langkah kedua E F D G H K I L J 9

100 NOTSI PREFIX, INFIX DN POSTFIX SERT TRVERSL 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 ontoh : F Untai yang dihasilkan secara Pre-order FDEG D G E 10

101 F Untai yang dihasilkan secara In-order DEFG D G E F Untai yang dihasilkan secara Post-order EDGF D G E 11

102 LTIHN : 1. Dari gambar pohon biner di bawah ini buatlah kunjungan secara pre-order, in-order dan postorder : a b. D F G 12

103 Daftar Pustaka ndri Kristanto, lgoritma & Pemrograman dengan ++ Edisi 2, Graha Ilmu, Yogyakarta, Moh. Sjukani, Struktur Data [lgoritma & Struktur Data 2] dengan, ++, Mitra Wacana Media, Jakarta, Tri Daryanto, Modul lgoritma Pemrograman dan Struktur Data, Universitas Mercu uana, Jakarta. Thompson Susabda Ngoen, Pengantar lgoritma dengan ahasa, Salemba Teknika, Jakarta,

104 MODUL PERKULIHN lgoritma Pemrograman dan Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu uana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Sistem Informasi bstract Kompetensi 6. Sequential Search Memahami bagaimana sistem 1

105 7. inary Search Tree Pencarian data INRY SERH TREE INRY SERH TREE adalah inary 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. inary search tree dibuat untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan dalam searching atau pencarian node tertentu dalam binary tree. ontoh binary search tree umum : Pada dasarnya operasi dalam binary search tree sama dengan binary tree biasa, kecuali pada operasi insert, update dan delete. ~ OPERSI 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. ngka-angka tersebut adalah 12, 15, 13, 9, 5, 11, 20 lgoritma 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. andingkan 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. 2

106 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 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 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 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

107 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 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

108 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 ~ OPERSI UPDTE Seperti pada binary tree biasa, namun disini update akan berpengaruh pada posisi node selanjutnya. ila setelah diupdate mengakibatkan tree tersebut bukan inary Search Tree lagi, maka harus dilakukan perubahan pada tree dengan melakukan rotasi supaya tetap menjadi inary Search Tree. ~ OPERSI 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. nda diminta untuk menghapus angka 5, 20, 12, 9 dan 15. dapun algoritma dari delete ini adalah : 1. Tentukan angka yang akan dihapus. 2. Kalau angka tersebut merupakan leaf, maka bisa langsung dihapus. 5

109 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 Delete angka 20 Karena angka 20 ini juga termasuk leaf, maka angka ini juga bisa segera dihapus 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

110 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 Delete angka 15 Karena angka 15 merupakan leaf, maka angka ini dapat segera dihapus LTIHN : uatlah algoritma dan program untuk memasukkan node baru ke dalam pohon dengan menggunakan prosedure pre-order, in-order, dan post-order lgoritma : 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)) { 7

111 } } 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 Jika ingin ditampilkan secara in-order lakukan langkah Jika ingin ditampilkan secara post-order lakukan langkah Selesai. 8

112 Implementasi algoritma di atas pada program adalah sebagai berikut : 9

113 10

114 ila Program dijalankan, hasilnya adalah : Gambar pohon binernya adalah : M E L I D O 11

BAB VIII QUEUE (ANTRIAN)

BAB VIII QUEUE (ANTRIAN) Modul 8 Struktur Data (Arie) - 1 BAB VIII QUEUE (ANTRIAN) Queue () adalah suatu kumpulan data yang penambahan elemennya hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan

Lebih terperinci

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided.

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided. STACK dan QUEUE Daftar Isi: Stack dan Queue Latihan soal Guided Unguided Take home Kunci jawaban soal guided MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA PENGANTAR Definisi Stack disebut

Lebih terperinci

Struktur Data Array. Rijal Fadilah S.Si

Struktur Data Array. Rijal Fadilah S.Si Struktur Data Array Rijal Fadilah S.Si Array Berdimensi Satu Array Satu dimensi tidak lain adalah kumpulan elemen-elemen identik yang tersusun dalam satu baris. Elemen-elemen tersebut memiliki tipe data

Lebih terperinci

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE STACK = TUMPUKAN SUATU SUSUNAN KOLEKSI DATA DIMANA DATA DAPAT DITAMBAHKAN DAN DIHAPUS SELALU DILAKUKAN PADA BAGIAN AKHIR DATA, YANG DISEBUT DENGAN TOP

Lebih terperinci

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list Universitas Muhammadiyah Sukabumi Artikel Struktur Data Oleh : fahmi fauzi Masukan Judul... 1. STACK DAN QUEUE DENGAN LINKED LIST Pengertian Linked list : sekumpulan elemen bertipe sama, yang mempunyai

Lebih terperinci

Algoritma Pemrograman & Struktur Data

Algoritma Pemrograman & Struktur Data MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Stack Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Fakultas Ilmu Informatika Komputer 04 87042 Abstract Penjelasan mengenai stack dan penggunaannya

Lebih terperinci

Pertemuan 7. REVIEW dan QUIS

Pertemuan 7. REVIEW dan QUIS Pertemuan 7 REVIEW dan QUIS 1. Type data dibawah ini, yang tidak termasuk dalam tipe data sederhana tunggal, adalah : a. Boolean d. Integer b. String e. float c. Char 2. ==, =,!=, termasuk dalam operator

Lebih terperinci

Algoritma dan Struktur Data. Ramos Somya

Algoritma dan Struktur Data. Ramos Somya Algoritma dan Struktur Data Ramos Somya Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman eksekusi suatu fungsi menggunakan prinsip Stact. Bersifat LIFO (Last In First Out) Benda

Lebih terperinci

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN) Pertemuan 5 STACK atau TUMPUKAN STACK (TUMPUKAN) Merupakan bentuk khusus dari Linier List yang pemasukan dan penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari List (Top)

Lebih terperinci

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( ) MAKALAH STRUKTUR DATA DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH (14.1.03.03.0024) FAKULTAS TEKNIK PROGRAM STUDI SISTEM INFORMASI UNIVERSITAS NUSANTARA PGRI KEDIRI

Lebih terperinci

BAB VI LINKED LIST. Struktur data dinamis sederhana dapat dibagi menjadi empat jenis, yaitu : 1. Linked list 2. Stack 3. Queue 4.

BAB VI LINKED LIST. Struktur data dinamis sederhana dapat dibagi menjadi empat jenis, yaitu : 1. Linked list 2. Stack 3. Queue 4. Modul 6 Struktur Data (Arie) - 1 BAB VI LINKED LIST Konsep dasar struktur data dinamis adalah alokasi memori yang dilakukan secara dinamis. Pada konsep ini, terdapat suatu struktur yang disebut dengan

Lebih terperinci

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak Defenisi : Secara sederhana, tumpukan bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakan diatas data yang lain. Satu hal yang

Lebih terperinci

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan STACK (TUMPUKAN) adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang

Lebih terperinci

S TA C K Sunu Wibirama

S TA C K Sunu Wibirama STACK Sunu Wibirama Jadwal ujian MID Hari Rabu, 6 April 2011 Pkl. 07.30-09.30 WIB Ruangan E3 Open Book, tapi tidak diperkenankan menggunakan internet, membuka laptop, atau handphone Bahan ujian Logika

Lebih terperinci

BAB II STACK (TUMPUKAN)

BAB II STACK (TUMPUKAN) BAB II STACK (TUMPUKAN) Stack merupakan metode dalam menyimpan atau mengambil data ke dan dari memori. Stack dapat dibratkan sebuah tumpukan barang dalam sebuah tempat yang hanya memiliki satu pintu diatsnya

Lebih terperinci

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR 1 PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR Siti Mukaromah, S.Kom TEKNIK PENYAJIAN ALGORITMA Teknik Tulisan Structure English Pseudocode Teknik Gambar Structure Chart HIPO Flowchart 2 PSEUDOCODE Kode

Lebih terperinci

Algoritma dan Struktur Data STACK

Algoritma dan Struktur Data STACK Algoritma dan Struktur Data STACK Teknik Informatika Universitas Muhammadiyah Malang 2016 Tujuan Instruksional Mahasiswa mampu : Memahami tentang konsep stack Mengetahui mekanisme pengoperasian sebuah

Lebih terperinci

Tumpukan(Stack)!! " # $ %&' $ %& ( ) ( * +, / ( (

Tumpukan(Stack)!!  # $ %&' $ %& ( ) ( * +, / ( ( BAB III Tumpukan(Stack) Tujuan: 1. Memahami terminologi yang terkait dengan struktur data stack 2. Memahami operasi-operasi yang ada dalam stack 3. Dapat mengidentifikasi permasalahan-permasalahan pemrograman

Lebih terperinci

Struktur dan Organisasi Data 2 STRUKTUR DATA

Struktur dan Organisasi Data 2 STRUKTUR DATA STRUKTUR DATA PENDAHULUAN Struktur data adalah suatu koleksi atau kelompok data yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Algorithma : barisan langkah-langkah

Lebih terperinci

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Langkah Mudah Belajar Struktur Data Menggunakan C/C++ Langkah Mudah Belajar Struktur Data Menggunakan C/C++ Sanksi Pelanggaran Pasal 113 Undang-Undang Nomor 28 Tahun 2014 tentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi

Lebih terperinci

Algoritma Dan Struktur Data II

Algoritma Dan Struktur Data II Algoritma Dan Struktur Data II List, Stack Putuputraastawa@gmail.com putuastawa.wordpress.com Beberapa Jenis Struktur Data 1. Array 1. Linear List 2. Stack 3. Queue 1. Apa? 2. Bagaimana cara implementasinya?

Lebih terperinci

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori. Array Linear Array (biasa disebut Array) adalah salah satu bentuk struktur data yang bersifat Linear (continue). Nilai data Array harus homogen (bertipe data sama). Array merupakan koleksi data dimana

Lebih terperinci

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5 A. Kompetensi 1. Utama SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5 Mahasiswa dapat memahami tentang konsep pemrograman

Lebih terperinci

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE LABORATORIUM PEMROGRAMAN PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MALANG 2015 I. TUJUAN II. Mahasiswa mampu

Lebih terperinci

BAB 1 TIPE DATA. Selain itu terdapat operasi MOD (Modulo) adalah sisa dari pembagian Contoh : 27 MOD 4 = 3

BAB 1 TIPE DATA. Selain itu terdapat operasi MOD (Modulo) adalah sisa dari pembagian Contoh : 27 MOD 4 = 3 BAB 1 TIPE DATA Struktur data adalah suatu koleksi atau kelompok data yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Data secara umum dapat dikategorikan :

Lebih terperinci

STRUKTUR DATA Pertemuan 1 s.d 8

STRUKTUR DATA Pertemuan 1 s.d 8 STRUKTUR DATA Pertemuan 1 s.d 8 Sasaran: Meningkatkan: pemahaman pengetahuan tentang teori dasar struktur data dan penanganan data serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman Materi

Lebih terperinci

BAB 1 TIPE DATA. Struktur Data 1. Sederhana : Array dan Record 2. Majemuk terdiri atas Linier Non Linier

BAB 1 TIPE DATA. Struktur Data 1. Sederhana : Array dan Record 2. Majemuk terdiri atas Linier Non Linier TIPE DATA Struktur data adalah suatu koleksi atau kelompok data yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Data secara umum dapat dikategorikan : Tipe data

Lebih terperinci

Tipe Data dan Operator

Tipe Data dan Operator Tipe Data dan Operator Dasar Algoritma dan Pemrogrman Eka Maulana, ST, MT, MEng. Klasifikasi Tipe Data 1 Tipe Data Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam

Lebih terperinci

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan STACK (TUMPUKAN) Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran

Lebih terperinci

Modul Praktikum Algoritma dan Struktur Data

Modul Praktikum Algoritma dan Struktur Data MODUL IV STACK A. TUJUAN 1. Memahami terminologi yang terkait dengan struktur data stack. 2. Memahami operasi-operasi yang ada dalam stack. 3. Dapat mengidentifikasi permasalahan-permasalahan pemrograman

Lebih terperinci

MODUL IV STACK A. TUJUAN

MODUL IV STACK A. TUJUAN MODUL IV STACK A. TUJUAN 1. Memahami terminologi yang terkait dengan struktur data stack. 2. Memahami operasi-operasi yang ada dalam stack. 3. Dapat mengidentifikasi permasalahan-permasalahan pemrograman

Lebih terperinci

4. STACK / TUMPUKAN TEORI PENUNJANG

4. STACK / TUMPUKAN TEORI PENUNJANG 4. TCK / TUMPUKN TUJUN PRKTIKUM 1. Praktikan mengenal tipe khusus dari link list yaitu stack/tumpukan beserta seluruh operasi yang ada padanya. 2. Praktikan diharapkan dapat menerapkan teori mengenai single

Lebih terperinci

LAPORAN PRAKTIKUM RESMI QUEUE

LAPORAN PRAKTIKUM RESMI QUEUE LAPORAN PRAKTIKUM RESMI QUEUE Disusun oleh : Amin Setyaningrum 201301052 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO

Lebih terperinci

Lab. Teknik Informatika Struktur Data 1

Lab. Teknik Informatika Struktur Data 1 2. POINTER dan SINGLE LINK LIST TUJUAN PRAKTIKUM 1. Praktikan mengetahui tipe struktur data baru yaitu tipe data Pointer. 2. Praktikan menggunakan pointer didalam pembuatan program dan dapat menerapkannya

Lebih terperinci

BAB III QUEUE (ANTRIAN)

BAB III QUEUE (ANTRIAN) BAB III QUEUE (ANTRIAN) 3.1 Pengertian Antrian Antrian (Queue) merupakan kumpulan data yang mana penambahan elemen hanya bias dilakukan pada suatu ujung yaitu rear /tail / belakang, dan pengha[usan dilakukan

Lebih terperinci

KU-1072 Pengenalan Teknologi Informasi - B. Materi: Array. Fakultas Ilmu dan Teknologi Kebumian

KU-1072 Pengenalan Teknologi Informasi - B. Materi: Array. Fakultas Ilmu dan Teknologi Kebumian KU-1072 Pengenalan Teknologi Informasi - B Materi: Array Fakultas Teknik Sipil dan Lingkungan Fakultas Ilmu dan Teknologi Kebumian Definisi Array [1] Array adalah suatu set dari alokasi data, dengan jenis

Lebih terperinci

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dalam tipe data dasar adalah bilangan logik, bilangan bulat,

Lebih terperinci

BAB II STACK Atau TUMPUKAN

BAB II STACK Atau TUMPUKAN BAB II STACK Atau TUMPUKAN List Linear (Daftar Linear). List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya disebut simpul (node). Simpul terdiri

Lebih terperinci

Linked List 6.3 & 7.3 NESTED LOOP

Linked List 6.3 & 7.3 NESTED LOOP Linked List 6.3 & 7.3 NESTED LOOP 1 Linked List ( List yang di-link satu dengan lainnya ) 2 apa itu List? 3 Contoh sebuah LIST int A[5]; 0 1 2 3 4 Array satu dimensi Disebut juga : Vector Kadang-kadang

Lebih terperinci

MODUL PRAKTIKUM STRUKTUR DATA

MODUL PRAKTIKUM STRUKTUR DATA MODUL PRAKTIKUM STRUKTUR DATA JAKARTA 2018 Page 1 DAFTAR ISI MODUL I TIPE DATA ARRAY 1 MODUL II STACK 4 MODUL III SEARCHING. 10 MODUL IV SORTING.. 13 MODUL V POINTER... 17 MODUL VI LINKED LIST 23 Page

Lebih terperinci

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan) PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan) inslls_05@yahoo.co.id A. Pembahasan Stack Algoritma stack merupakan struktur data yang mengimplementasi dari aturan LIFO (Last In First Out).

Lebih terperinci

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN PERTEMUAN 2 ALGORITMA & PEMROGRAMAN POKOK BAHASAN 1. Pendahuluan 2. Tahapan Pembangunan Program 3. Pengenalan Algoritma 4. Cara Menyajikan Algoritma 5. Data Program 6. Elemen-Elemen Program PENDAHULUAN

Lebih terperinci

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN I. Elemen-Elemen Dalam Bahasa Pemrograman Berikut adalah elemen-elemen pada bahasa pemrograman: Berikut adalah element-element pada bahasa pemrograman: 1. Aturan

Lebih terperinci

Algoritma dan Struktur Data. Linked List

Algoritma dan Struktur Data. Linked List Algoritma dan Struktur Data Linked List Syntax: struct nama_struct { tipe_data_1 nama_var_1; tipe_data_2 nama_var_2; tipe_data_3 nama_var_3; }; 2 KONSEP ALOKASI MEMORY DINAMIS 1. Deklarasikan pointer yang

Lebih terperinci

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR) SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR) Dilustrasikan sebagai kereta yang mempunyai gerbong-gerbong. Pertama tama kita membuat tipe data baru dari gerbong kereta tersebut.

Lebih terperinci

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera POINTER STACK DAN QUEUE ALGORITMA DAN STRUKTUR DATA Institut Teknologi Sumatera PRE TEST Apakah yang disebut dengan array? Bagaimana cara deklarasi dan pengacuan dari sebuah array? Apa kekurangan array?

Lebih terperinci

MODUL PRAKTIKUM STRUKTUR DATA. Dosen Pengampu M.Bahrul Ulum, S.Kom., M.Kom. Asisten Lab Mia Kastina PROGRAM STUDI TEKNIK INFORMATIKA

MODUL PRAKTIKUM STRUKTUR DATA. Dosen Pengampu M.Bahrul Ulum, S.Kom., M.Kom. Asisten Lab Mia Kastina PROGRAM STUDI TEKNIK INFORMATIKA 2018 MODUL PRAKTIKUM STRUKTUR DATA Dosen Pengampu M.Bahrul Ulum, S.Kom., M.Kom Asisten Lab Mia Kastina PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS ESA UNGGUL JAKARTA DAFTAR ISI

Lebih terperinci

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C 1. Pendahuluan Lingkungan Turbo C++ 4.5 Turbo C++ 4.5 adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C++ 4.5. 1 2 3 4 1 : Menu Utama

Lebih terperinci

04. Single Linked List

04. Single Linked List 04. Single Linked List ARNA FARIZA YULIANA SETIOWATI Capaian Pembelajaran 1. Mahasiswa mengerti konsep alokasi memori secara dinamis menggunakan pointer. 2. Mahasiswa mengerti konsep single linked list

Lebih terperinci

Achmad Solichin.

Achmad Solichin. Pemrograman Bahasa C dengan Turbo C Sh-001@plasa.com Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),

Lebih terperinci

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue. Pertemuan 9 Waktu Tujuan Pembelajaran : 135 menit : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue. Substansi Materi : Queue Tabulasi Kegiatan Perkuliahan No Tahap Kegiatan Kegiatan Pengajar

Lebih terperinci

Praktikum 4. Tumpukan (Stack)

Praktikum 4. Tumpukan (Stack) Praktikum 4 Tumpukan (Stack) POKOK BAHASAN: Konsep Tumpukan (Stack) Struktur data untuk Tumpukan Algoritma merubah Infix menjadi Postfix Implementasi Tumpukan dalam Bahasa C TUJUAN BELAJAR: Setelah melakukan

Lebih terperinci

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST Pertemuan 3 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut

Lebih terperinci

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009 SOAL C++ 1. Penulisan Preprocessor yang benar di awali dengan tanda pound atau tanda : a. # c. @ b. & d. = 2. Contoh penulisan file header yang benar yaitu : a. &include c. =include

Lebih terperinci

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1 Algoritma dan Pemrograman Lanjut Pertemuan Ke-8 Pengurutan (Sorting) 1 Disusun Oleh : Wilis Kaswidjanti, S.Si.,M.Kom. Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Pembangunan Nasional

Lebih terperinci

Stack. Gambar 1.1 Stack

Stack. Gambar 1.1 Stack Stack Stack adalah struktur data yang memiliki sifat last in first out. Struktur dari stack yang dapat kita lihat sehari-hari adalah : tumpukan (lihat gambar 1.1) Gambar 1.1 Stack Terdapat 2 (dua) operasi

Lebih terperinci

# NINE Queue dengan Array

# NINE Queue dengan Array HANDOUT ALGORITMA PEMROGRAMAN DAN STRUKTUR DATA 1 PRODI SISTEM INFORMASI UKDW # NINE Queue dengan Array LANJUTAN: DOUBLE STACK dengan Array - Adalah suatu teknik khusus yang dikembangkan untuk menghemat

Lebih terperinci

A. TUJUAN PEMBELAJARAN

A. TUJUAN PEMBELAJARAN Praktikum 2 Stack (Tumpukan) A. TUJUAN PEMBELAJARAN Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu: 1. Memahami terminologi yang terkait dengan struktur data stack. 2. Memahami operasi-operasi

Lebih terperinci

05. Double Linked List

05. Double Linked List 0. Double Linked List ARNA FARIZA YULIANA SETIOWATI Capaian Pembelajaran 1. Mahasiswa mengerti konsep double linked list dan operasi pada single linked list. 2. Mahasiswa dapat mengimplementasikan double

Lebih terperinci

Algoritma Pemrograman. Fery Updi,M.Kom

Algoritma Pemrograman. Fery Updi,M.Kom Algoritma Pemrograman Fery Updi,M.Kom 1 Kompetensi Detail Mampu menjelaskan Prinsip-prinsip Algoritma Mampu menjelaskan Konsep Bahasa Pemrograman Mampu membuat Flowchart dan Pseudocode Mampu menjelaskan

Lebih terperinci

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus. 1 ARRAY & LINKED LIST MODUL 1 Standar kompetensi: 1. Mahasiswa mengetahui perbedaan array dan linked list. 2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus. 3. Mahasiswa

Lebih terperinci

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta) STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta) A. Stack 1. Pendahuluan Stack (tumpukan) dan queue (antrian) sebenarnya adalah sebuah cara dalam mengorganisasikan data-data yang dimiliki. Ibarat

Lebih terperinci

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List Pertemuan 5 Waktu Tujuan Pembelajaran : 135 menit : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Substansi Materi : Single Linked List, LIFO, FIFO Tabulasi Kegiatan Perkuliahan

Lebih terperinci

BAB IV Antrian(Queue)

BAB IV Antrian(Queue) BAB IV Antrian(Queue) Tujuan 1. Memahami berbagai cara untuk merepresentasikan queue secara sekuensial maupun dengan menggunakan linked list 2. Memahami implementasi queue dalam menyelesaikan sebuah permasalahan

Lebih terperinci

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA I. Pendahuluan Algoritma dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami. Algoritma dapat ditulis dalam bahasa natural/bahasa

Lebih terperinci

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada. Semester : 4 Pengenalan Algoritma dan Program 200 menit No. : LST/EKA/EKA259/01 Revisi : 01 Tgl. : 10-2-2014 Hal. 1 dari 2 hal. 1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada. 2.

Lebih terperinci

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS 29 BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS Dengan menggunakan Visual Basic 6.0 aplikasi perangkat ajar pengelolaan dan perhitungan ekspresi matematika yang akan dibangun dalam penelitian

Lebih terperinci

Algoritma Dan Struktur Data II. Queue

Algoritma Dan Struktur Data II. Queue Algoritma Dan Struktur Data II Queue Apakah Queue itu? Putuu Putra Astawa Apakah Queue itu? Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang

Lebih terperinci

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc PRAKTIKUM STRUKTUR DATA QUEUE SULIDAR FITRI, M.Sc QUEUE Secara harafiah, queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui

Lebih terperinci

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri Senarai berantai linked list Pertemuan keenam Struktur data st3telkom.ac.id by : tenia wahyuningrum & Sisilia Thya Safitri Senarai berantai Dalam pemakaian sehari-hari istilah senarai berantai (list) adalah

Lebih terperinci

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN) Pertemuan 6 QUEUE (ANTREAN) PENGERTIAN QUEUE (ANTREAN) Struktur Data Antrean (Queue) adalah suatu bentuk khusus dari List Linier dengan operasi pemasukan data hanya diperbolehkan pada salah satu sisi,

Lebih terperinci

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman Jurusan Teknik Informatika Fakultas Teknik Universitas Maritim Raja Ali Haji ALGORITMA DAN PEMOGRAMAN I. ALGORITMA II. BAHASA

Lebih terperinci

Pendahuluan Pemrograman Mikrokontroler

Pendahuluan Pemrograman Mikrokontroler Pendahuluan Pemrograman Mikrokontroler Pokok Bahasan: 1. Pemrograman C 2. Pengalokasian Memory Tujuan Belajar: Setelah mempelajari dalam bab ini, mahasiswa diharapkan mampu: 1. Memahami dan Menjelaskan

Lebih terperinci

TIPE, NAMA, DAN NILAI

TIPE, NAMA, DAN NILAI TIPE, NAMA, DAN NILAI Dian Palupi Rini, M.Kom Tipe Dasar Bilangan Logika Nama Tipe adalah boolean (diambil dari nama matematikawan Inggris George Boole). Ranah Nilai : true (benar) dan false (salah). Konstanta

Lebih terperinci

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI: Praktikum 7 Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: Konsep pengurutan dengan insertion sort dan selection sort Struktur data proses pengurutan Implementasi algoritma pengurutan

Lebih terperinci

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR Sebuah daftar linear atau linear list, merupakan suatu struktur data umum yang terbentuk dari barisan hingga yang terurut) dari satuan data ataupun dari record. Untuk

Lebih terperinci

ALGORITMA DAN STRUKTUR DATA

ALGORITMA DAN STRUKTUR DATA Modul ke: 03 Fitrianingsih, Fakultas FASILKOM ALGORITMA DAN STRUKTUR DATA OLEH : Skom., MMSI Program Studi Sistem Informasi Bagian Isi POINTER POINTER DAN ADDRESS POINTER DAN FUNCTION LINKED LIST ALGORITMA

Lebih terperinci

(3) BAHAN KAJIAN (materi ajar)

(3) BAHAN KAJIAN (materi ajar) FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL RENCANA PEMBELAJARAN Matakuliah : Konsep Struktur Data Semester : Genap Kode : 08010305 SKS : 2 Jurusan : Manajemen Informatika Dosen

Lebih terperinci

Chapter 1 KONSEP DASAR C

Chapter 1 KONSEP DASAR C Chapter 1 KONSEP DASAR C Sejarah Dan Standar C Akar dari bahasa C adalah BCPL (dikembangkan oleh Martin Richard tahun 1967). Kemudian Tahun 1970, Ken Thompson mengembangkan bahasa tersebut yang di kenal

Lebih terperinci

STACK. Sistem penyimpanan data dengan mekanisme Last In First Out( LIFO).

STACK. Sistem penyimpanan data dengan mekanisme Last In First Out( LIFO). STACK Sistem penyimpanan data dengan mekanisme Last In First Out( LIFO). Stack merupakan tipe data abstrak yang banyak digunakan dalam berbagai algoritma, diantaranya adalah: Algoritma konversi infix ke

Lebih terperinci

Single Linked List (1)

Single Linked List (1) Praktikum 5 Single Linked List (1) A. TUJUAN PEMBELAJARAN Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu: 1. Memahami konsep membangun single linked list 2. Memahami konsep operasi

Lebih terperinci

Type Data terdiri dari : - Data Tunggal : Integer, Real, Boolean dan Karakter. - Data Majemuk : String

Type Data terdiri dari : - Data Tunggal : Integer, Real, Boolean dan Karakter. - Data Majemuk : String Struktur dapat diartikan sebagai suatu susunan, bentuk, pola atau bangunan. Data dapat diartikan sebagai suatu fakta, segala sesuatu yang dapat dikodekan atau disimbolkan dengan kode-kode atau lambang-lambang

Lebih terperinci

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN ) STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN ) Oleh : NAZARUDDIN AHMAD, S.T, M.T Referensi : Antonius Rachmat C, S.Kom Design By mytemplate 2013 Stack Stack atau tumpukan adalah suatu struktur yang

Lebih terperinci

Struktur Data. PDE - Struktur Data 1

Struktur Data. PDE - Struktur Data 1 Struktur Data Copyright@Ihsan Jatnika PDE - Struktur Data 1 Objektif Mengetahui maksud struktur data dan menjelaskan penggunaannya dalam pemrograman Mengetahui operasi yang terkait dengan struktur data

Lebih terperinci

ALGORITMA PENGURUTAN & PENCARIAN

ALGORITMA PENGURUTAN & PENCARIAN Materi kuliah ALGORITMA PENGURUTAN & PENCARIAN Ir. Roedi Goernida, MT. (roedig@yahoo.com) Program Studi Sistem Informasi Fakultas Rekayasa Industri Institut Teknologi Telkom Bandung 2011 1 Pengelompokan

Lebih terperinci

Brigida Arie Minartiningtyas, M.Kom

Brigida Arie Minartiningtyas, M.Kom Brigida Arie Minartiningtyas, M.Kom Struktur Data Struktur dan Data Struktur suatu susunan, bentuk, pola atau bangunan Data suatu fakta, segala sesuatu yang dapat dikodekan atau disimbolkan dengan kode-kode

Lebih terperinci

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST Pertemuan 4 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut

Lebih terperinci

Algoritma Pemrograman & Struktur Data

Algoritma Pemrograman & Struktur Data MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Linked List Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Fakultas Ilmu Informatika Komputer 03 87042 Abstract Penjelasan mengenai linked

Lebih terperinci

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST Pertemuan 4 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut

Lebih terperinci

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar Bahasa Pemrograman Pascal Page 1 / 11 Pengenalan Pascal Pascal merupakan salah satu bahasa pemrograman tingkat tinggi. Pemrograman

Lebih terperinci

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN) STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN) Oleh : NAZARUDDIN AHMAD, S.T, M.T Referensi : Antonius Rachmat C, S.Kom Andri Heryamdi Design By mytemplate 2013 Queue Queue atau antrian adalah barisan

Lebih terperinci

TIF 4201 Algoritma Dan Struktur Data

TIF 4201 Algoritma Dan Struktur Data TIF 4201 Algoritma Dan Struktur Data Abstract Data Type Teknik Informatika Universitas Brawijaya Semester Gasal 2010/2011 1 TIPE DATA Terdapat beberapa macam tipe data. Misalnya int, double, string, dll.

Lebih terperinci

Bab 2. Dasar-Dasar Pemrograman C

Bab 2. Dasar-Dasar Pemrograman C Bab 2. Dasar-Dasar Pemrograman C Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 Overview Tipe Data Standar (Standart Data Type) Aturan Pendefinisian Identifier Variabel Mendeklarasikan

Lebih terperinci

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3) BAHASA PEMROGRAMAN 1 (PERTEMUAN 3) ARRAY KUMPULAN SOAL LATIHAN PREPARED BY CHANDRA 092110187 05 06 2010 (REVISED) PENGENALAN ARRAY Array dari Pesawat Array dari Serangga Array dari Kartu Array dari Karakter

Lebih terperinci

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST Pertemuan 4 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut

Lebih terperinci

Algoritma Dan Struktur Data II

Algoritma Dan Struktur Data II Algoritma Dan Struktur Data II Array dan Matriks Apa itu Struktur Data? PROGRAM ALGORITMA STRUKTUR DATA Algoritma.. deskripsi langkah-langkah penyelesaian masalah yang tersusun secara logis 1. ditulis

Lebih terperinci

BAB III METODE PENELITIAN / PERANCANGAN SISTEM. perancangan dan pembuatan program ini meliputi : dengan konversi notasi infix, prefix, dan postfix.

BAB III METODE PENELITIAN / PERANCANGAN SISTEM. perancangan dan pembuatan program ini meliputi : dengan konversi notasi infix, prefix, dan postfix. 21 BAB III METODE PENELITIAN / PERANCANGAN SISTEM 3.1. Metode Penelitian Metodologi penelitian yang digunakan untuk mendukung penyelesaian perancangan dan pembuatan program ini meliputi : 1. Studi literatur

Lebih terperinci

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs. Algoritma dan Struktur Data Ramos Somya, S.Kom., M.Cs. Penggunaan record dalam jumlah yang banyak alokasi memory konvensional tidak bisa diandalkan. Misal kita akan bekerja dengan file yang menyimpan sangat

Lebih terperinci

Tumpukan (Stack) Stack bersifat LIFO (Last In First Out) LIFO Data yang terakhir masuk ke dalam stack menjadi data yang pertama keluar dari stack

Tumpukan (Stack) Stack bersifat LIFO (Last In First Out) LIFO Data yang terakhir masuk ke dalam stack menjadi data yang pertama keluar dari stack Tumpukan (Stack) Susunan koleksi data dimana proses penambahan data (add) dan penghapusan data (delete) selalu dilakukan melalui posisi akhir data. Posisi akhir data top of stack Stack bersifat LIFO (Last

Lebih terperinci

SENARAI BERANTAI (LINK LIST)

SENARAI BERANTAI (LINK LIST) SENARAI BERANTAI (LINK LIST) Salah satu solusi untuk mengatasi kekurangan array adalah dengan Linked List. Linked List (senarai berantai satu arah atau one way list) merupakan struktur data dinamis yang

Lebih terperinci