Modul Praktikum. Struktur Data. Oleh: M. Fachrurrozi, MT. Comlabs Fakultas Ilmu Komputer. Universitas Sriwijaya

Ukuran: px
Mulai penontonan dengan halaman:

Download "Modul Praktikum. Struktur Data. Oleh: M. Fachrurrozi, MT. Comlabs Fakultas Ilmu Komputer. Universitas Sriwijaya"

Transkripsi

1 Modul Praktikum Struktur Data Oleh: M. Fachrurrozi, MT Comlabs Fakultas Ilmu Komputer Universitas Sriwijaya 2009

2 Editor : Ferry Gustiawan Buku ini diterbitkan dalam rangka pengadaan buku ajar untuk pendidikan di perguruan tinggi khususnya di lingkungan Fakultas Ilmu Komputer Universitas Sriwijaya. Hak Cipta pada Comlabs Fakultas Ilmu Komputer Universitas Sriwijaya 2

3 Daftar Isi Daftar Isi...3 Muqaddimah Pointer dan Array...9 Tujuan...9 Dasar teori...9 Tools yang digunakan...10 Prototipe dan Primitif/Algoritma...11 Praktik...12 Evaluasi dan Pertanyaan...12 Kesimpulan Fungsi dan Prosedur, ADT...13 Tujuan...13 Dasar teori...13 Tools yang digunakan...16 Prototipe dan Primitif/Algoritma...16 Praktik...18 Evaluasi dan Pertanyaan...18 Kesimpulan List (bagian 1)...20 Tujuan...20 Dasar teori...20 Tools yang digunakan...25 Prototipe dan Primitif/Algoritma

4 Praktik...27 Evaluasi dan Pertanyaan...27 Kesimpulan List (bagian 2)...29 Tujuan...29 Dasar teori...29 Tools yang digunakan...29 Prototipe dan Primitif/Algoritma...29 Praktik...31 Evaluasi dan Pertanyaan...31 Kesimpulan List (bagian 3)...33 Tujuan...33 Dasar teori...33 Tools yang digunakan...33 Prototipe dan Primitif/Algoritma...34 Praktik...35 Evaluasi dan Pertanyaan...35 Kesimpulan Stack...37 Tujuan...37 Dasar teori...37 Tools yang digunakan...39 Prototipe dan Primitif/Algoritma

5 Praktik...40 Evaluasi dan Pertanyaan...41 Kesimpulan Queue (bagian 1)...42 Tujuan...42 Dasar teori...42 Tools yang digunakan...44 Prototipe dan Primitif/Algoritma...44 Praktik...46 Evaluasi dan Pertanyaan...46 Kesimpulan Queue (bagian 2)...47 Tujuan...47 Dasar teori...47 Tools yang digunakan...49 Prototipe dan Primitif/Algoritma...50 Praktik...52 Evaluasi dan Pertanyaan...52 Kesimpulan Binary Search Tree...53 Tujuan...53 Dasar teori...53 Tools yang digunakan...55 Prototipe dan Primitif/Algoritma

6 Praktik...57 Evaluasi dan Pertanyaan...57 Kesimpulan Double Linked List...58 Tujuan...58 Dasar teori...58 Tools yang digunakan...65 Prototipe dan Primitif/Algoritma...65 Praktik...66 Evaluasi dan Pertanyaan...66 Kesimpulan...67 Referensi

7 Muqaddimah Allah mengangkat derajat orang yang beriman dan orang yang berilmu pengetahuan beberapa derajat. (Mujaddalah 11) Abu Hurairah r.a. berkata: Rasulullah SAWbersabda: Barang siapa yang ditanya suatu ilmu agama lalu menyembunyikannya, maka akan dikendalikan mulutnya pada hari kiamat dengan kendali dari api neraka. (Abu Dawud, Attirmidzi) Tiada akan pernah mampu seseorang dalam mengerjakan sesuatu tanpa pernah mencobanya terlebih dahulu. 7

8 Dari ketiga sumber ilmu inilah penulis ingin berusaha membuat sesuatu yang bermanfaat bagi orang lain, walaupun masih banyak kekurangan yang terdapat di dalam buku ini. Buku praktikum ini merupakan salah satu bahan ajar pendukung untuk mata kuliah Struktur Data. Dari buku ini diharapkan mahasiswa dapat dengan mudah mempelajari, memahami, dan mempraktikkan materi materi yang telah diajarkan pada kelas teori mata kuliah Struktur Data. Kemudian buku ini diharapkan dapat menjadi referensi untuk pemecahan permasalahan umum diluar materi perkuliahan. Sebagian besar isi dari buku ini merupakan rangkuman dari sumber-sumber yang telah dibuat penulis lain. Penulis berharap agar buku ini dapat bermanfaat bagi semua kalangan pembaca. Terima kasih untuk semuanya yang telah memberikan banyak kritik dan saran serta dukungan dalam penulisan buku ini. Dunia akan selalu indah karena kejujuran dan kebersamaan. Palembang, September 2009 Penulis 8

9 1. Pointer dan Array Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep pointer dan array di dalam Bahasa C 2. Memahami konsep copy value dan copy address 3. Menggunakan pointer dan array di dalam program lainnya Dasar teori Pointer Pointer dapat diartikan sebagai suatu nilai yang menunjuk alamat suatu lokasi memori. Lokasi memori tersebut mungkin diwakili oleh sebuah variabel atau mungkin juga lokasi bebas dalam memori. Sedangkan pointer sendiri yang berupa nilai ditampung dalam sebuah variabel yang disebut variabel pointer. Jadi variabel pointer atau pointer berisi suatu nilai yang menyatakan alamat suatu lokasi. Contoh : a 2 A *c b *d * * 3 B * * var valu e addres Step: 1. d=&a *d = 2 ; d = A 2. c=&b *c = 3 ; c = B 3. b=*d b = 2 ; &b = B 4. *d=*c *d = 2 ; d = A Dari contoh di atas terlihat bahwa addres pada variabel pointer dapat berubah ubah, apabila addres suatu variabel pointer berubah maka valuenya akan berubah sesuai addres yang ditunjuk oleh pointer tersebut. Apabila pada address yang ditunjuk oleh pointer tersebut mengalami perubahan value, maka value pada pointer juga akan berubah. 9

10 Array satu dimensi Dalam bahasa pemrograman, array adalah variabel yang sejenis yang berderet sedemikian rupa sehingga alamatnya saling bersambung/kontigu atau dengan kata lain variabel berindeks. Bentuk umum : tipe_array nama_array [jumlah data] Ilustrasi array satu dimensi : Array di atas mempunyai enam element. Array Multidimensi Array multidimensi adalah array yang mempunyai lebih dari satu dimensi. Misal : A[3][5] artinya array tersebut mempunyai 3 baris 5 kolom. Bentuk umum : Ilustrasi array multi dimensi : tipe_array nama_array [jumlah data][jumlah data] Array di atas mempunyai delapan belas element. Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C

11 Prototipe dan Primitif/Algoritma 1. Pointer a b c A B C *d *e * * * * var valu e addres 2. Array Dinamis

12 Praktik 1. Terjemahkan prototipe/primitif kasus pointer di atas ke dalam bahasa C dengan langkah-langkah : 1. d=&a 2. c=a 3. e=&b 4. b=c 5. *d=c Cetak nilai dan alamat variabel-variabel di atas. 2. Terjemahkan prototipe/primitif kasus array dinamis diatas ke dalam bahasa C dengan langkah-langkah : 1. Deklarasikan variable x integer yang dinamis 2. Alokasikan jumlah address di x untuk dimensi pertama sebanyak n=5 3. Tiap-tiap indeks yang ada di dimensi satu, alokasikan jumlah address sebanyak n-j (j=0..4) 4. Isi value tiap-tiap elemen indeks i,j dengan nilai j+1 5. Di akhir program, bebaskan semua address yang dipakai oleh x. Evaluasi dan Pertanyaan 1. Untuk kasus pointer, ketikkan code berikut ; &c = d; Apa yang terjadi? alasanya? 2. Untuk kasus pointer, hapus code &c = d;, ganti dengan kode berikut : d = &c; Apakah masih error? alasannya? 3. Untuk kasus array, bagaimana jika nilai n diubah menjadi n=3? Kesimpulan 12

13 2. Fungsi dan Prosedur, ADT Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami fungsi dan prosedur di dalam Bahasa C dan menggunakannya di dalam konsep ADT. 2. Memahami pembuatan ADT di dalam bahasa C. Dasar teori Fungsi Fungsi adalah sejumlah instruksi yang dikelompokkan menjadi satu, berdiri sendiri, yang berfungsi untuk menyelesaikan suatu pekerjaan. Bahasa C minimal mempunyai satu buah fungsi yang disebut Fungsi main() yaitu fungsi induk/utama. Sintaks penulisannya adalah sebagai berikut : TipeData NamaFungsi() { Statement return variabel } Ingat bahwa pemrograman bersifat terstruktur, karena itu untuk fungsi yang dibuat setelah main, harus dideklarasikan lebih dahulu di bagian atas. Prosedur Prosedur adalah suatu fungsi yang tidak mengembalikan nilai, karena itu tipe data untuk prosedur adalah void atau kosong. Sintaks penulisannya adalah sebagai berikut : void NamaProsedur() { Statement } 13

14 Ingat bahwa pemrograman bersifat terstruktur, karena itu untuk prosedur yang dibuat setelah main, harus dideklarasikan lebih dahulu di bagian atas. Penggunaan Parameter Ada 2 jenis Parameter Formal Parameter, merupakan parameter yang muncul di definisi fungsi atau prosedur. Actual Parameter, merupakan parameter yang muncul di program saat pemanggilan fungsi atau prosedur. Berikut adalah sintaks untuk penggunaan parameter TipeData NamaFungsi(TipeData Variabel1, TipeData Variabel2) { Statement return variabel } TipeData NamaProsedur(TipeData Variabel1, TipeData Variabel2) { Statement return variabel } Abstract Data Type (ADT) ADT adalah definisi TYPE dan sekumpulan PRIMITIF (operasi dasar) terhadap TYPE tersebut. Selain itu, dalam sebuah ADT yang lengkap, disertakan pula definisi invarian dari TYPE dan aksioma yang berlaku. ADT merupakan definisi statik. Definisi type dari sebuah ADT dapat mengandung sebuah definisi ADT lain. Misalnya: ADT Waktu yang terdiri dari ADT JAM dan ADT DATE GARIS yang terdiri dari dua buah POINT SEGI4 yang terdiri dari pasangan dua buah POINT (Top, Left) dan (Bottom,Right) Type diterjemahkan menjadi type terdefinisi dalam bahasa yang bersangkutan, misalnya menjadi record dalam bahasa Ada/Pascal atau struct dalam bahasa C. Primitif, dalam konteks prosedural, diterjemahkan menjadi fungsi atau prosedur. Primitif dikelompokkan menjadi : 14

15 Konstruktor/Kreator, pembentuk nilai type. Semua objek (variabel) bertype tsb harus melalui konstruktor. Biasanya namanya diawali Make. Selektor, untuk mengakses komponen type (biasanya namanya diawali dengan Get) Prosedur pengubah nilai komponen (biasanya namanya diawali Get) Validator komponen type, yang dipakai untuk mentest apakah dapat membentuk type sesuai dengan batasan Destruktor/Dealokator, yaitu untuk.menghancurkan. nilai objek (sekaligus memori penyimpannya) Baca/Tulis, untuk interface dengan input/output device Operator relational, terhadap type tsb untuk mendefinisikan lebih besar, lebih kecil, sama dengan, dsb Aritmatika terhadap type tsb, karena biasanya aritmatika dalam bahasa pemrograman hanya terdefinisi untuk bilangan numerik Konversi dari type tersebut ke type dasar dan sebaliknya ADT biasanya diimplementasi menjadi dua buah modul, yaitu: Definisi/Spesifikasi Type dan primitif. Spesifikasi type sesuai dengan bahasa yang bersangkutan. Spesifikasi dari primitif sesuai dengan kaidah dalam konteks prosedural, yaitu: Fungsi : nama, domain, range dan prekondisi jika ada Prosedur : Initial State, Final State dan Proses yang dilakukan Body/realisasi dari primitif, berupa kode program dalam bahasa yang bersangkutan. Realisasi fungsi dan prosedur harus sedapat mungkin memanfaatkan selektor dan konstruktor. Supaya ADT dapat di-test secara tuntas, maka dalam kuliah ini setiap kali membuat sebuah ADT, harus disertai dengan sebuah program utama yang dibuat khusus untuk men-test ADT tsb, yang minimal mengandung pemakaian (call) terhadap setiap fungsi dan prosedur dengan mencakup semua kasus parameter. Program utama yang khusus dibuat untuk test ini disebut sebagai driver. Urutan pemanggilan harus diatur sehingga fungsi/prosedur yang memakai fungsi/prosedur lain harus sudah ditest dan direalisasi terlebih dulu. Realisasi ADT dalam bahasa C, file header dengan ekstensi.h dan file kode dengan ekstensi.c. Dalam modul ADT tidak terkandung definisi variabel. Modul ADT biasanya dimanfaatkan oleh modul lain, yang akan mendeklarasikan variabel bertype ADT tsb dalam modulnya. Jadi ADT bertindak sebagai Supplier (penyedia type dan primitif), sedangkan modul pengguna berperan sebagai Client (pengguna) dari ADT 15

16 tsb. Biasanya ada sebuah pengguna yang khusus yang disebut sebagai main program (program utama) yang memanfaatkan langsung type tsb. Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C Prototipe dan Primitif/Algoritma 1. Fungsi dan Prosedur Procedure TukarNilai (Input Output: a, b : Integer) { temp=a; a=b; b=temp; } 2. ADT Point 1: /* Nama file point.h */ 2: 3: #ifndef ADTPoint_h 4: #define ADTPoint_h 5: 6: #include <stdio.h> 7: #include <math.h> 8: 9: 10: typedef struct 11: { 12: int x; 13: int y; 14: } point; 15: 16: /**===== Konstruktor =====**/ 17: 18: point MakePoint (int x, int y); 19: /* Membentuk sebuah POINT dari komponen-komponennya */ 20: 21: /**===== Selektor =====**/ 22: 23: int GetAbsis (point P); 24: /* Mengirimkan komponen absis dari P */ 25: 26: int GetOrdinat (point P); 27: /* Mengirimkan komponen ordinat dari P */ 28: 16

17 29: void SetAbsis(point *P, int newx); 30: /* Mengubah nilai komponen absis dari P */ 31: 32: void SetOrdinat(point *P, int newy); 33: /* Mengubah nilai komponen ordinat dari P */ 34: 35: /** Kelompok Interaksi dengan I/O device, BACA/TULIS **/ 36: 37: void BacaPOINT (point *P); 38: /* MakePoint (x, y, p) membentuk P dari x dan y yang dibaca */ 39: 40: void TulisPOINT (point P); 41: /* Nilai P ditulis ke layar dgn format "(x,y)" */ 45: point Plus (point P1, point P2); 46: /* Menghasilkan POINT yang bernilai P1+P2 */ 47: 48: point Minus (point P1, point P2); 49: /* Menghasilkan POINT yang bernilai P1-P2 */ 106: void Geser (point *P, int DeltaX, int DeltaY); 107: /* P digeser absisnya sebesar DeltaX dan ordinatnya sebesar DeltaY */ 108: 109: void GeserKeSbX (point *P); 110: /* P digeser ke sumbu x */ 111: 112: void GeserKeSbY (point *P); 113: /* P digeser ke sumbu y */ 1: /* Nama file point.c */ 2: 3: 4: #include "point.h" 5: #include <math.h> 6: 7: /**===== Konstruktor =====**/ 8: 9: point MakePoint (int x, int y) 10: /* Membentuk sebuah POINT dari komponen-komponennya */ 11: { 12: point P; 13: P.x = x; 14: P.y = y; 15: return P; 16: } 17: 18: /**===== Selektor =====**/ 19: 20: int GetAbsis (point P) 21: /* Mengirimkan komponen absis dari P */ 22: { 23: return P.x; 24: } 25: 26: int GetOrdinat (point P) 27: /* Mengirimkan komponen ordinat dari P */ 17

18 28: { 29: return P.y; 30: } 31: 32: void SetAbsis(point *P, int newx) 33: /* Mengubah nilai komponen absis dari P */ 34: { 35: (*P).x = newx; 36: } 37: 38: void SetOrdinat(point *P, int newy) 39: /* Mengubah nilai komponen ordinat dari P */ 40: { 41: (*P).y = newy; 42: } 43: 44: /** Kelompok Interaksi dengan I/O device, BACA/TULIS **/ 45: 46: void BacaPOINT (point *P) 47: /* MakePoint (x, y, p) membentuk P dari x dan y yang dibaca */ 48: { 49: printf("masukkan absis dari point:"); 50: scanf("%d", &((*P).x)); 51: printf("masukkan ordinat dari point:"); 52: scanf("%d", &((*P).y)); 53: MakePoint((*P).x, (*P).y); 54: } 55: 56: void TulisPOINT (point P) 57: /* Nilai P ditulis ke layar dgn format "(x,y)" */ 58: { 59: printf("(%d,%d)\n", P.x, P.y); 60: } Praktik 1. Implementasikan fungsi dan prosedur yang belum diimplementasikan 2. Buat file drivernya: mpoint.c Evaluasi dan Pertanyaan 1. Apa yang dimaksud variabel lokal, variabel lokal, called function, calling function? 2. Tuliskan algoritma GeserKeSbX dan algoritma GeserKeSbY? 18

19 Kesimpulan 19

20 3. List (bagian 1) Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep list dan mampu mengimplementasikannya ke bahasa C. 2. Mampu melakukan operasi insert dan delete pada list. Dasar teori List Linier List linier adalah sekumpulan elemen bertype sama, yang mempunyai keterurutan tertentu, dan setiap elemennya terdiri dari dua bagian, yaitu informasi mengenai elemennya, dan informasi mengenai alamat elemen suksesornya : type ElmtList : <Info : InfoType, Next :address> dengan InfoType adalah sebuah type terdefinisi yang menyimpan informasi sebuah elemen list; Next adalah address ("alamat") dari elemen berikutnya (suksesor). Dengan demikian, jika didefinisikan First adalah alamat elemen pertama list, maka elemen berikutnya dapat diakses secara suksesif dari field Next elemen tersebut Alamat yang sudah didefinisikan disebut sudah di-alokasi. Didefinisikan suatu konstanta Nil, yang artinya alamat yang tidak terdefinisi. Alamat ini nantinya akan didefinisikan secara lebih konkret ketika list linier diimplementasi pada struktur data fisik Jadi, sebuah list linier dikenali : elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut : First alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen,yang dapat diakses melalui informasi NEXT. NEXT mungkin ada secara eksplisit (seperti contoh di atas), atau secara implisit yaitu lewat kalkulasi atau fungsi suksesor. Setiap elemen mempunyai alamat, yaitu tempat elemen disimpan 20

21 dapat diacu. Untuk mengacu sebuah elemen, alamat harus terdefinisi. Dengan alamat tersebut Informasi yang tersimpan pada elemen list dapat diakses elemen terakhirnya. Ada berbagai cara untuk mengenali elemen akhir Jika L adalah list, dan P adalah address: Alamat elemen pertama list L dapat diacu dengan notasi : First(L) Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi Selektor : Info(P) Next(P) Beberapa definisi : - List L adalah list kosong, jika First(L) = Nil - Elemen terakhir dikenali, misalnya jika Last adalah alamat element terakhir, maka Next(Last) =Nil INSERT-First Menambahkan sebuah elemen yang diketahui alamatnya sebagai elemen pertama list. Insert elemen pertama, List kosong : 21

22 Menambahkan sebuah elemen yang diketahui nilainya sebagai elemen pertama list. Tahap pertama : Insert Nilai 3 sebagai elemen pertama, List : karena yang diketahui adalah nilai, maka harus dialokasikan dahulu sebuah elemen supaya nilai 3 dapat di-insert Jika alokasi berhasil, P tidak sama dengan Nil 22

23 INSERT-After : Menyisipkan sebuah elemen beralamat P setelah sebagai suksesor dari sebuah elemen list linier yang beralamat Prec INSERT-Last Menyisipkan sebuah elemen beralamat P setelah sebagai elemen terakhir sebuah list linier. Ada dua kemungkinan list kosong atau tidak kosong. Insert sebagai elemen terakhir list tidak kosong. Insert sebagai elemen terakhir list tidak kosong 23

24 DELETE-First : menghapus elemen pertama list linier Elemen yang dihapus dicatat alamatnya : DELETE-After : Penghapusan suksesor sebuah elemen : DELETE-Last : Menghapus elemen terakhir list dapat dilakukan jika alamat dari eemen sebelum elemen terakhir diketahui. Persoalan selanjutnya menjadi persoalan DELETEAFTER, kalau Last bukan satu-satunya elemen list linier. Ada dua kasus, yaitu list menjadi kosong atau tidak. Kasus list menjadi kosong : 24

25 List tidak menjadi kosong (masih mengandung elemen) : Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C Prototipe dan Primitif/Algoritma /*file : list1.h*/ /*contoh ADT list berkait dengan representasi fisik pointer*/ /*representasi address dengan pointer*/ /*infotype adalah integer*/ #ifndef list_h #define list_h #include "boolean.h" #define Nil NULL #define info(p) (*P).info #define next(p) (P)->next #define First(L) ((L).First) #define infotype int typedef struct telmtlist *address; typedef struct telmtlist { infotype info; address next; } Elmtlist; 25

26 /*Definisi list*/ /*List kosong : First(L) = Nil*/ /*Setiap elemen dengan address P dapat diacu info(p), Next (P)*/ /*Elemen terakhir list : jika addressnya Last, maka Next(Last) = Nil*/ typedef struct { address First; } List; /*PROTOTYPE*/ /*test list kosong*/ boolean ListEmpty (List L); /*true jika list kosong*/ /*PEMBUATAN LIST KOSONG*/ void CreateList (List *L); /*membentuk list kosong*/ /*MANAJEMEN MEMORI*/ address alokasi (infotype X); /*mengirimkan address hasil alokasi sebuah elemen*/ /*jika alokasi berhasil, maka address tidak nil, dan */ /*bila menghasilkan P, maka info(p) = X, Next(P) = Nil*/ /*jika alokasi gagal, mengirimkan Nil*/ void dealokasi (address P); /*mengembalikan P ke sistem*/ /*melakukan dealokasi/pengembalian address P*/ /*PRIMITF BERDASARKAN ALAMAT*/ void InsertFirst(List *L, address P); /*menambahkan elemen beraddress P sebagai elemen pertama*/ void InsertAfter(List *L, address P, address Prec); /*Prec pastilah elemen list dan bukan elemen terakhir*/ void InsertLast(List *L, address P); /*P ditambahkan sebagai elemen terakhir yang baru*/ /*PENGHAPUSAN SEBUAH ELEMEN*/ void DelFirst(List *L, address *P); /*P adalah alamat elemen pertama list sebelum penghapusan*/ /*elemen list berkurang satu, firstelemen baru adalah suksesor elemen pertama yang lama*/ void DelP(List *L, infotype X); /*jika ada elemen list beraddress P, dengan info(p) = X*/ /*maka P dihapus dari list dan didealokasi*/ 26

27 /*jika tak ada, maka list tetap*/ void DelLast (List *L, address *P); /*P adalah alamat elemen terakhir list sebelum penghapusan*/ /*Last Elemen yang baru adalah predesesor elemen pertama yang lama*/ void DelAfter(List *L, address *Pdel, address Prec); /*Prec adalah anggota list*/ /*menghapus Next (Prec)*/ /*PROSES SEMUA ELEMEN LIST*/ void Printinfo(List L); /*semua info yang disimpan pada elemen list diprint*/ /*jika list ksoong, hanya menuliskan "list kosong"*/ int NbElmt(List L); /*mengirimkan banyaknya elemen list, 0 bila list kosong*/ infotype Max(List L); /*mengirimkan nilai info(p) yang maksimum*/ infotype Min(List L); /*mengirimkan nilai info(p) yang minimum*/ #endif Praktik 1. Ketik kode program di bawah ini kemudian simpan dengan nama boolean.h 2. Ketik prototipe/primitif di atas dan simpan dengan nama list.h. 3. Buat file list.c yang berisi implementasi dari list.h. 4. Buat file main driver mlist.c. Evaluasi dan Pertanyaan 1. Tuliskan algoritma untuk nilai maksimum list dan minimum list? 2. Tambahkan program untuk mencetak address max dan address min? 27

28 Kesimpulan 28

29 4. List (bagian 2) Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep list dan mampu mengimplementasikannya ke bahasa C. 2. Mampu melakukan operasi insert dan delete berdasarkan value pada list. Dasar teori Tidak ada perbedaan dengan teori pada Modul List (bagian 1) sebelumnya hanya saja pada modul ini proses pada list berdasarkan value. Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C Prototipe dan Primitif/Algoritma /*file : list1.h*/ /*contoh ADT list berkait dengan representasi fisik pointer*/ /*representasi address dengan pointer*/ /*infotype adalah integer*/ #ifndef list_h #define list_h #include "boolean.h" #define Nil NULL #define info(p) (*P).info #define next(p) (P)->next #define First(L) ((L).First) #define infotype int typedef struct telmtlist *address; typedef struct telmtlist { infotype info; 29

30 address next; } Elmtlist; /*Definisi list*/ /*List kosong : First(L) = Nil*/ /*Setiap elemen dengan address P dapat diacu info(p), Next (P)*/ /*Elemen terakhir list : jika addressnya Last, maka Next(Last) = Nil*/ typedef struct { address First; } List; void InsertAfter(List *L, address P, address Prec); /*Prec pastilah elemen list dan bukan elemen terakhir*/ void InsertLast(List *L, address P); /*P ditambahkan sebagai elemen terakhir yang baru*/ void DelP(List *L, infotype X); /*jika ada elemen list beraddress P, dengan info(p) = X*/ /*maka P dihapus dari list dan didealokasi*/ /*jika tak ada, maka list tetap*/ void DelLast (List *L, address *P); /*P adalah alamat elemen terakhir list sebelum penghapusan*/ /*Last Elemen yang baru adalah predesesor elemen pertama yang lama*/ void DelAfter(List *L, address *Pdel, address Prec); /*Prec adalah anggota list*/ /*menghapus Next (Prec)*/ int NbElmt(List L); /*mengirimkan banyaknya elemen list, 0 bila list kosong*/ infotype Max(List L); /*mengirimkan nilai info(p) yang maksimum*/ infotype Min(List L); /*mengirimkan nilai info(p) yang minimum*/ /*PRIMITIF BERDASARKAN NILAI*/ void InsVFirst (List *L, infotype X); /*melakukan alokasi sebuah elemen, dan menambahkan elemen pertama dengan nilai X*/ /*bila alokasi berhasil*/ void InsVLast (List *L, infotype X); /*menambahkan elemen list di akhir, elemen terakhir yang baru*/ /*PENCARIAN SEBUAH ELEMEN LIST*/ address Search (List L, infotype X); /*mencari apakah ada elemen list dengan info(p) = X*/ /*Jika ada, kirimkan address. Jika tak ada kirimkan Nil*/ 30

31 boolean FSearch(List L, address P); /*mencari apakah ada elemen list yang beralamat P*/ /*true jika ada*/ address SearchPrec (List L, infotype X, address *Prec); /*mengirimkan address elemen sebelum elemen yang nilainya X*/ /*mencari apakah ada elemen list dengan info(p) = X*/ /*jika ada mengirimkan address Prec dengan Next(Prec) = P*/ /*PENGHAPUSAN ELEMEN*/ void DelVFirst(List *L, infotype *X); /*Elemen pertama list dihapus : nilai info disimpan pada X dan alamat elemen pertama*/ /*di dealokasi*/ void DelVLast (List *L, infotype *X); /*Elemen terakhir list dihapus, nilai info disimpan pada X*/ #endif Praktik 1. Ketik kode program di bawah ini kemudian simpan dengan nama boolean.h 2. Ketik prototipe/primitif di atas dan simpan dengan nama list.h. 3. Buat file list.c yang berisi implementasi dari list.h. 4. Buat file main driver mlist.c. Evaluasi dan Pertanyaan 1. Apa perbedaan operasi list berdasarkan address dengan operasi list berdasarkan value? beri penjelasan? 2. Sehunbungan dengan pertanyaan 1, bagaimana dengan algoritmanya? 31

32 Kesimpulan 32

33 5. List (bagian 3) Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep list dan mampu mengimplementasikannya ke bahasa C. 2. Mampu melakukan operasi invers, concate, copy dan pecah list. Dasar teori Konkatenasi dua buah list linier Concat : L1 x L2 L{ Menyambung L1 dengan L2 } Konkatenasi adalah menggabungkan dua list. Dalam contoh berikut list kedua disambungkan ke list pertama. Jadi Last(L1) menjadi predesesor First(l2). Realisasi algoritmiknya adalah sebuah prosedur sebagai berikut. Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C

34 Prototipe dan Primitif/Algoritma /*file : list1.h*/ /*contoh ADT list berkait dengan representasi fisik pointer*/ /*representasi address dengan pointer*/ /*infotype adalah integer*/ #ifndef list_h #define list_h #include "boolean.h" #define Nil NULL #define info(p) (*P).info #define next(p) (P)->next #define First(L) ((L).First) #define infotype int typedef struct telmtlist *address; typedef struct telmtlist { infotype info; address next; } Elmtlist; /*Definisi list*/ /*List kosong : First(L) = Nil*/ /*Setiap elemen dengan address P dapat diacu info(p), Next (P)*/ /*Elemen terakhir list : jika addressnya Last, maka Next(Last) = Nil*/ typedef struct { address First; } List; infotype Average(List L); /*mengirimkan nilai rata-rata info(p)*/ /*PROSES TERHADAP LIST*/ void DelAll(List *L); /*mendelete semua elemen list dan alamat elemen di-dealokasi*/ void InversList (List *L); /*membalik elemen list, tanpa melakukan alokasi * dealokasi*/ List FInversList (List L); /*mengirimkan list baru hasil invers dari L dengan menyain ssemua elemen L*/ /*semua elemen yang terlanjur dialokasi, harus didealokasi*/ void CopyList (List *L1, List *L2); 34

35 /*L1 dan L2 menunjuk pada list yang sama*/ List FCopyList(List L); /*mengirimkan list yang merupakan salinan L*/ void CpAlokList (List Lin, List *Lout); /*jika semua alokasi berhasil maka Lout harus berisi hasil copy Lin*/ /*Jika ada alokasi yang gagal, maka Lout = Nil dan semua elemen yang terlanjur*/ /*dialokasi, didealokasi dengan melakukan alokasi elemen*/ /*Lout adalah list kosong jika ada alokasi elemen yang gagal*/ void konkat (List L1, List L2, List *L3); /*L3 adalah hasil konkatenasi L1 dan L2*/ /*Jika ada alokasi yang gagal, semua elemen yang sudah dialokasi harus didealokasi dan L3 = Nil*/ void konkat1 (List *L1, List *L2, List *L3); /*konkatenasi L1 serta L2 menjadi L3. L1 dan L2 sendiri menjadi list kosong*/ /*tidak ada alokasi / dealokasi pada prosedur ini*/ void PecahList(List *L1, List *L2, List L); /*berdasarkan L, membentuk dua buah list L1 dan L2*/ /*L1 dan L2 harus di alokasi*/ /*L1 berisi separuh elemen L dan L2 sisanya*/ /*Jika elemen L ganjil, maka separuh adalah NbElmt(L) div 2*/ #endif Praktik 1. Ketik kode program di bawah ini kemudian simpan dengan nama boolean.h 2. Ketik prototipe/primitif di atas dan simpan dengan nama list.h. 3. Buat file list.c yang berisi implementasi dari list.h. 4. Buat file main driver mlist.c. Evaluasi dan Pertanyaan 1. Tuliskan algoritma invers list dan copy list? 2. Tambahkan program untuk menyalin semua elemen List L1 yang info-nya bernilai ganjil, simpan hasilnya di List L2? 35

36 Kesimpulan 36

37 6. Stack Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep stack dan mengimplemetasikannya ke bahasa C. 2. Mampu melakukan operasi pop dan push pada stack. Dasar teori Stack Stack (Tumpukan) adalah list linier yang : 1. Dikenali elemen puncaknya (TOP) 2. Aturan penyisipan dan penghapusan elemennya tertentu : - Penyisipan selalu dilakukan "di atas" TOP - Penghapusan selalu dilakukan pada TOP Karena aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat tempat terjadi operasi, elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus. Dikatakan bahwa elemen Stack akan tersusun secara LIFO (Last In First Out). Struktur data ini banyak dipakai dalam informatika, misalnya untuk merepresentasi : - pemanggilan prosedur - perhitungan ekspresi artimatika - rekursifitas - backtracking - dan algoritma lanjut yang lain 37

38 Perhatikan bahwa dengan definisi semacam ini, representasi tabel sangat tepat untuk mewakili stack, karena operasi penambahan dan pengurangan hanya dilakukan di salah satu ujung tabel. Definisi Fungsional Diberikan S adalah Stack dengan elemen ElmtS, maka definisi fungsional stack adalah : Definisi Selektor adalah Jika S adalah sebuah Stack, maka Top(S) adalah alamat elemen TOP, di mana operasi penyisipan/penghapusan dilakukan InfoTop(S) adalah informasi yang disimpan pada Top(S). Definisi Stack kosong adalah Stack dengan Top(S)=Nil (tidak terdefinisi). Implementasi Stack dengan tabel : Tabel dengan hanya representasi TOP adalah indeks elemen Top dari Stack. Jika Stack kosong, maka TOP=0. Ilustrasi Stack tidak kosong, dengan 5 elemen : 38

39 Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C Prototipe dan Primitif/Algoritma 1. Stack Statis /* file : stackt.h */ /* deklarasi type dan prototype */ #ifndef stackt_h #define stackt_h #include "boolean.h" #define MaxEl 10 #define Nil 0 typedef int infotype; typedef int address; typedef struct { infotype T[MaxEl+1]; address Top; } Stackt; //Prototype //Kreator void CreateEmpty(Stackt *S); //Mengirim true jika stack kosong boolean IsEmpty(Stackt *S); //mengirim true jika penampung sudah penuh boolean IsFull(Stackt *S); //menambahkan elemen ke stack void Push(Stackt *S, infotype X); //menghapus sebuah elemen stack void Pop(Stackt *S); #endif 2. Stack Dinamis /* File: stack.h */ #ifndef stack_h #define stack_h 39

40 #define true 1 #define false 0 #define boolean unsigned char int infotype, address; typedef struct{ int top; int *T; int size; } stack; /* ***** Konstruktor/Kreator ***** */ /* Membuat sebuah stack s yang kosong berkapasitas size */ void CreateEmpty(stack *s, int size); /* Destruktor : Dealokasi seluruh table memori sekaligus */ void destruct(stack *s); /* Mengirim true jika tabel penampung nilai elemen stack penuh */ boolean IsFull(stack s); /* Mengirim true jika stack kosong */ boolean IsEmpty(stack s); /* Menambahkan x sebagai elemen stack s */ void push(stack *s, int x); /* Menghapus x dari stack s */ void pop(stack *s, int *x); /* Menambahkan x sebagai elemen stack s, jika s mencapai nilai maksimum */ /* maka s akan melakukan grow, yaitu menambah kapasitas maksimum */ void pushgrow(stack *s, int x); /* Menambah kapasitas penampung stack s */ void grow(stack *s); /* Menghapus x dari stack s. Jika s mencapai nilai minimum */ /* maka s akan melakukan shrink, yaitu mengurangi kapasitas maksimum */ void popshrink(stack *s, int *x); /* Mengurangi kapasitas maksimum penampung stack s */ void shrink(stack *s); #endif Praktik 1. Buat file boolean.h. 2. Ketik prototipe/primitif di atas dan simpan dengan nama stackt.h dan stack.h. 3. Buat file.c yang berisi implementasi dari file.h. 4. Buat file main driver-nya. 40

41 Evaluasi dan Pertanyaan 1. Tulis algoritma Push dan Pop pada stack statis dan dinamis? 2. Sehubungan dengan pertanyaan 1, ada perbedaankah? beri penjelasan? Kesimpulan 41

42 7. Queue (bagian 1) Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep Queue dan mengimplementasikannya ke bahasa C. 2. Mampu melakukan operasi add dan delete pada queue versi 1. Dasar teori Queue (Antrian) Queue adalah list linier yang : 1. Dikenali elemen pertama (HEAD) dan elemen terakhirnya (TAIL), 2. Aturan penyisipan dan penghapusan elemennya didefinisikan sebagai berikut: - Penyisipan selalu dilakukan setelah elemen terakhir - Penghapusan selalu dilakukan pada elemen pertama 3. Satu elemen dengan yang lain dapat diakses melalui informasi NEXT. Struktur data ini banyak dipakai dalam informatika, misalnya untuk merepresentasi : - antrian job yang harus ditangani oleh sistem operasi - antrian dalam dunia nyata. Maka secara lojik, sebuah QUEUE dapat digambarkan sebagai list linier yang setiap elemennya adalah type ElmtQ : < Info : InfoType, Next :address> dengan InfoType adalah sebuah type terdefinisi yang menentukan informasi yang disimpan pada setiap elemen queue, dan address adalah "alamat" dari elemen. Selain itu alamat elemen pertama (HEAD) dan elemen terakhir(tail) dicatat : Maka jika Q adalah Queue dan P adalah adaress, penulisan untuk Queue adalah : Head(Q),Tail(Q), Info(Head(Q)), Info(Tail(Q)) 42

43 Definisi Fungsional Queue Diberikan Q adalah QUEUE dengan elemen ElmtQ maka definisi fungsional antrian adalah: Implementasi QUEUE dengan tabel : Memori tempat penyimpan elemen adalah sebuah tabel dengan indeks 1.. IdxMax. IdxMax dapat juga dipetakan ke kapasitas Queue. Representasi field Next: Jika i adalah address sebuah elemen, maka suksesor i adalah Next dari elemen Queue. Alternatif I : Tabel dengan hanya representasi TAIL adalah indeks elemen terakhir, HEAD selalu diset sama dengan 1 jika Queue tidak kosong. Jika Queue kosong, maka HEAD=0. Ilustrasi Queue tidak kosong, dengan 5 elemen : 43

44 Algoritma paling sederhana untuk penambahan elemen jika masih ada tempat adalah dengan memajukan TAIL. Kasus khusus untuk Queue kosong karena HEAD harus diset nilainya menjadi 1. Algoritma paling sederhana dan naif untuk penghapusan elemen jika Queue tidak kosong: ambil nilai elemen HEAD, geser semua elemen mulai dari HEAD+1 s/d TAIL (jika ada), kemudian TAIL mundur. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI. Algoritma ini mencerminkan pergeseran orang yang sedang mengantri di dunia nyata, tapi tidak efisien. Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C Prototipe dan Primitif/Algoritma 1. Queue Versi 1 /* Nama file ADTQueue1.h */ #ifndef ADTQueue1_H #define ADTQueue1_H #include "boolean.h" #include <stdlib.h> #define Nil 0 /* Definisi elemen dan address */ typedef int infotype; typedef int address; /* Indeks tabel */ typedef struct 44

45 { infotype *T; /* Tabel penyimpan elemen */ address HEAD; /* Alamat penghapusan */ address TAIL; /* Alamat penambahan */ int MaxEl; /* Max elemen queue */ } queue; /** ===== Akses Selektor ===== **/ #define Head(Q) (Q).HEAD #define Tail(Q) (Q).TAIL #define InfoHead(Q) (Q).T[(Q).HEAD] #define InfoTail(Q) (Q).T[(Q).TAIL] #define MaxEl(Q) (Q).MaxEl /** ========== **/ /** ===== Prototype ===== **/ boolean IsEmpty(queue Q); /* Mengirim TRUE jika Q kosong: Head=Nil dan Tail=Nil */ boolean IsFull(queue Q); /* Mengirim TRUE jika tabel penampung elemen Q sudah penuh */ /* Yaitu mengandung MaxEl elemen */ int NbElmt(queue Q); /* Mengirimkan banyaknya elemen queue. Mengirimkan 0 jika Q kosong */ /** ========== **/ /** ===== Kreator ===== **/ void CreateEmpty(queue *Q, int MaxEl); /* Melakukan alokasi, membuat sebuah Q kosong */ /** ========== **/ /** ===== Destruktor ===== **/ void DeAlokasi(queue *Q); /* Mengembalikan memori Q dan Q menjadi tidak terdefinisi lagi, MaxEl(Q) diset 0 */ /** ========== **/ /** ===== Primitif Add/Delete ===== **/ void Add(queue *Q, infotype X); /* Menambahkan X pada Q dengan aturan FIFO */ /* precondition: tabel penampung elemen Q tidak penuh */ void Del(queue *Q, infotype *X); /* Menghapus X pada Q dengan aturan FIFO */ /* setiap kali menghapus elemen, elemen Head + 1 sampai dengan Tail digeser /* sehingga Head tetap bernilai 1 untuk Queue tidak kosong */ /* precondition: tabel penampung elemen Q tidak kosong */ /** ========== **/ #endif 45

46 Praktik 1. Buat file boolean.h. 2. Ketik prototipe/primitif di atas dan simpan dengan nama ADTQueue1.h. 3. Buat file.c yang berisi implementasi dari file.h 4. Buat file main driver-nya. Evaluasi dan Pertanyaan 1. Tuliskan algoritma add dan delete pada queue di atas? 2. Buat kesimpulan Anda! Kesimpulan 46

47 8. Queue (bagian 2) Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep queue dan mengimplemntasikannya ke bahasa C. 2. Mampu melakukan operasi add dan delete pada queue versi 2 dan 3. Dasar teori Queue Alternatif II : Tabel dengan representasi HEAD dan TAIL, HEAD.bergerak. ketika sebuah elemen dihapus jika Queue tidak kosong. Jika Queue kosong, maka HEAD=0. Ilustrasi Queue tidak kosong, dengan 5 elemen, kemungkinan pertama HEAD sedang berada di posisi awal: Ilustrasi Queue tidak kosong, dengan 5 elemen, kemungkinan pertama HEAD tidak berada di posisi awal. Hal ini terjadi akibat algoritma penghapusan yang dilakukan (lihat keterangan) Ilustrasi Queue kosong: 47

48 Algoritma untuk penambahan elemen sama dengan alternatif I: jika masih ada tempat adalah dengan.memajukan. TAIL. Kasus khusus untuk Queue kosong karena HEAD harus diset nilainya menjadi 1. Algoritmanya sama denganalternatif I Algoritma untuk penghapusan elemen jika Queue tidak kosong: ambil nilai elemen HEAD, kemudian HEAD.maju.. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI. Algoritma ini TIDAK mencerminkan pergeseran orang yang sedang mengantri di dunia nyata, tapi efisien. Namun suatu saat terjadi keadaan Queue penuh tetapi.semu sebagai berikut : Jika keadaan ini terjadi, haruslah dilakukan aksi menggeser elemen untuk menciptakan ruangan kosong. Pergeseran hanya dilakukan jika dan hanya jika TAIL sudah mencapai IndexMax. Alternatif III : Tabel dengan representasi HEAD dan TAIL yang berputar mengelilingi indeks tabel dari awal sampai akhir, kemudian kembali ke awal. Jika Queue kosong, maka HEAD=0. Representasi ini memungkinkan tidak perlu lagi ada pergeseran yang harus dilakukan seperti pada alternatif II pada saat penambahan elemen. Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan HEAD sedang berada di posisi awal: Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan HEAD tidak berada di posisi awal, tetapi masih lebih kecil atau sebelum TAIL. Hal ini terjadi akibat algoritma penghapusan/penambahan yang dilakukan (lihat keterangan). 48

49 Ilustrasi Queue tidak kosong, dengan 5 elemen, HEAD tidak berada di posisi awal, tetapi lebih besar atau sesudah TAIL. Hal ini terjadi akibat algoritma penghapusan/penambahan yang dilakukan (lihat keterangan) Algoritma untuk penambahan elemen: jika masih ada tempat adalah dengan memajukan TAIL. Tapi jika TAIL sudah mencapai IdxMax, maka suksesor dari IdxMax adalah 1 sehingga TAIL yang baru adalah 1. Jika TAIL belum mencapai IdxMax, maka algoritma penambahan elemen sama dengan alternatif II. Kasus khusus untuk Queue kosong karena HEAD harus diset nilainya menjadi 1. Algoritma untuk penghapusan elemen jika Queue tidak kosong: ambil nilai elemen HEAD, kemudian HEAD maju. Penentuan suatu suksesor dari indkes yang diubah/maju dibuat seperti pada algoritma penambahan elemen: jika HEAD mencapai IdxMAx, maka suksesor dari HEAD adalah 1. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI. Algoritma ini efisien karena tidak perlu pergeseran, dan seringkali strategi pemakaian tabel semacam ini disebut sebagai circular buffer, dimana tabel penyimpan elemen dianggap sebagai buffer. Salah satu variasi dari representasi pada alternatif III adalah : menggantikan representasi TAIL dengan COUNT, yaitu banyaknya elemen Queue. Dengan representasi ini, banyaknya elemen diketahui secara eksplisit, tetapi untuk melakukan penambahan elemen harus dilakukan kalkulasi TAIL. Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C

50 Prototipe dan Primitif/Algoritma 1. Queue Versi 2 /* Nama file ADTQueue2.h */ #ifndef ADTQueue2_H #define ADTQueue2_H #include "boolean.h" #include <stdlib.h> #define Nil 0 /* Definisi elemen dan address */ typedef int infotype; typedef int address; /* Indeks tabel */ typedef struct { infotype *T; /* Tabel penyimpan elemen */ address HEAD; /* Alamat penghapusan */ address TAIL; /* Alamat penambahan */ int MaxEl; /* Max elemen queue */ } queue; /** ===== Akses Selektor ===== **/ #define Head(Q) (Q).HEAD #define Tail(Q) (Q).TAIL #define InfoHead(Q) (Q).T[(Q).HEAD] #define InfoTail(Q) (Q).T[(Q).TAIL] #define MaxEl(Q) (Q).MaxEl /** ===== Prototype ===== **/ boolean IsEmpty(queue Q); /* Mengirim TRUE jika Q kosong: Head=Nil dan Tail=Nil */ boolean IsFull(queue Q); /* Mengirim TRUE jika tabel penampung elemen Q sudah penuh */ /* Yaitu mengandung MaxEl elemen */ int NbElmt(queue Q); /* Mengirimkan banyaknya elemen queue. Mengirimkan 0 jika Q kosong */ /** ===== Kreator ===== **/ void CreateEmpty(queue *Q, int MaxEl); /* Melakukan alokasi, membuat sebuah Q kosong */ /** ===== Destruktor ===== **/ void DeAlokasi(queue *Q); /* Mengembalikan memori Q dan Q menjadi tidak terdefinisi lagi, MaxEl(Q) diset 0 */ /** ===== Primitif Add/Delete ===== **/ void Add(queue *Q, infotype X); /* Menambahkan X pada Q dengan aturan FIFO */ /* Jika Tail(Q)=MaxEl+1 maka geser isi tabel, shg Head(Q)=1 */ /* precondition: tabel penampung elemen Q tidak penuh */ 50

51 void Del(queue *Q, infotype *X); /* Menghapus X pada Q dengan aturan FIFO */ /* precondition: tabel penampung elemen Q tidak kosong */ /** ========== **/ 2. Queue Versi 3 /* Nama file ADTQueue3.h */ #ifndef ADTQueue3_H #define ADTQueue3_H #include "boolean.h" #include <stdlib.h> #define Nil 0 /* Definisi elemen dan address */ typedef int infotype; typedef int address; /* Indeks tabel */ typedef struct { infotype *T; /* Tabel penyimpan elemen */ address HEAD; /* Alamat penghapusan */ address TAIL; /* Alamat penambahan */ int MaxEl; /* Max elemen queue */ } queue; /** ===== Akses Selektor ===== **/ #define Head(Q) (Q).HEAD #define Tail(Q) (Q).TAIL #define InfoHead(Q) (Q).T[(Q).HEAD] #define InfoTail(Q) (Q).T[(Q).TAIL] #define MaxEl(Q) (Q).MaxEl /** ========== **/ /** ===== Prototype ===== **/ boolean IsEmpty(queue Q); /* Mengirim TRUE jika Q kosong: Head=Nil dan Tail=Nil */ boolean IsFull(queue Q); /* Mengirim TRUE jika tabel penampung elemen Q sudah penuh */ /* Yaitu mengandung MaxEl elemen */ int NbElmt(queue Q); /* Mengirimkan banyaknya elemen queue. Mengirimkan 0 jika Q kosong */ /** ========== **/ /** ===== Kreator ===== **/ void CreateEmpty(queue *Q, int MaxEl); /* Melakukan alokasi, membuat sebuah Q kosong */ /** ========== **/ /** ===== Destruktor ===== **/ void DeAlokasi(queue *Q); /* Mengembalikan memori Q dan Q menjadi tidak terdefinisi lagi, MaxEl(Q) diset 0 */ 51

52 /** ========== **/ /** ===== Primitif Add/Delete ===== **/ void Add(queue *Q, infotype X); /* Menambahkan X pada Q dengan aturan FIFO secara sirkuler */ /* precondition: tabel penampung elemen Q tidak penuh */ void Del(queue *Q, infotype *X); /* Menghapus X pada Q dengan aturan FIFO secara sirkuler */ /* precondition: tabel penampung elemen Q tidak kosong */ /** ========== **/ #endif Praktik 1. Buat file boolean.h. 2. Ketik prototipe/primitif di atas dan simpan dengan nama ADTQueue2.h dan ADTQueue3.h. 3. Buat file.c yang berisi implementasi dari file.h. 4. Buat file main driver-nya. Evaluasi dan Pertanyaan 1. Tuliskan algoritma add dan delete pada queue versi 2 dan 3? 2. Sehubungan dengan pertanyaan 1, apakah perbedaannya queue versi 1, 2 dan 3? Kesimpulan 52

53 9. Binary Search Tree Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep binary search tree dan mengimplementasikannya ke bahasa C. 2. Melakukan operasi add, delete, dan search pada tree. Dasar teori Stuktur Pohon Biner sebuah pohon biner adalah himpunan terbatas yang - mungkin kosong, atau - terdiri dari sebuah simpul yang disebut akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner, yang disebut sebagai sub pohon kiri dan sub pohon kanan dari pohon biner tersebut. Perhatikanlah perbedaan pohon biner dengan pohon biasa : pohon biner mungkin kosong, sedangkan pohon n-aire tidak mungkin kosong. Contoh pohon ekspresi aritmatika Karena adanya arti bagi sub pohon kiri dan sub pohon kanan, maka dua buah pohon biner sebagai berikut berbeda (pohon berikut disebut pohoncondong/skewed tree) 53

54 Sub pohon ditunjukkan dengan penulisan () Pohon Seimbang (balanced tree) Pohon seimbang: Pohon seimbang tingginya: perbedaan tinggi sub pohon kiri dengan sub pohon kanan maksimum 1 Pohon seimbang banyaknya simpul: perbedaan banyaknya simpul sub pohon kiri dengan sub pohon kanan maksimum 1 Pohon Biner Terurut (Binary serach tree) Pohon biner terurut P memenuhi sifat : Semua simpul subpohon kiri selalu < dari Info(P) Semua simpul subpohon kiri selalu > dari Info(P) Untuk simpul yang sama nilainya : disimpan berapa kali muncul. Maka sebuah node P akan menyimpan informasi : Info(P), Left(P), Right(P), Count(P) yaitu banyaknya kemunculan Info(P). Contoh eksekusi penghapusan node pada pohon biner terurut: 54

55 Tools yang digunakan 1. PC 2. Dev-C++ / Turbo C Prototipe dan Primitif/Algoritma /* file : bst.h */ #ifndef BST_H_ #define BST_H_ #include <stdlib.h> #include <stdio.h> #define Nil NULL /* Lengkapilah definisi selektor dibawah ini */ #define Akar(P) (P)->info #define Left(P) (P)->left #define Right(P) (P)->right #define IsUnerLeft(P) Left(P)!=Nil && Right(P)==Nil #define IsUnerRight(P) Left(P)==Nil && Right(P)!=Nil #define IsBin(P) Left(P)!=Nil && Right(P)!=Nil #define IsDaun(P) Left(P)==Nil && Right(P)==Nil typedef int infotype; typedef struct telmttree *addrtree; typedef struct telmttree { infotype info; 55

56 addrtree left; addrtree right; } ElmtTree; typedef addrtree BinTree; BinTree Alokasi(infotype I); /* Mengembalikan hasil alokasi sebuah BinTree P dengan Akar(P)=I, */ /* Left(P)=Nil dan Right(P)=Nil */ void Dealokasi(BinTree Node); /* I.S : Node adalah sebuah BinTree dengan Left(Node)=Nil */ /* dan Right(Node)=Nil */ /* F.S : Node dihancurkan dan Node=Nil */ /* Proses : Menghancurkan alamat memori yang ditunjuk Node, dan */ /* nilai Node diset Nil */ void MakeTree(infotype I,BinTree L,BinTree R,BinTree *P); /* I.S : I adalah infotype sembarang, L dan R mungkin Nil,P */ /* sembarang */ /* F.S : P adalah sebuah pohon baru dengan Akar(*P)=I, */ /* Left(*P)=L, dan Right(*P)=Nil */ /* Proses : Mengalokasikan sebuah pohon baru *P dengan nilai */ /* Akar(*P)=I, Left(*P)=L, dan Right(*P)=Nil jika */ /* alokasi berhasil. Jika alokasi gagal P=Nil */ void DestroyTree(BinTree *P); /* I.S : P adalah pointer ke BinTree, mungkin Nil */ /* F.S : Pohon Biner P dihancurkan, semua memori yang digunakan */ /* dikembalikan, dan P=Nil */ /* Proses : Menghancurkan pohon biner P, semua memori yang */ /* digunakan dihancurkan dan P=Nil */ void PrintTree(BinTree P); /* I.S : P adalah pohon biner mungkin kosong */ /* F.S : P tidak berubah, semua nilai dituliskan ke layar */ /* Proses : Menuliskan semua nilai info dari setiap simpul pohon /* dengan notasi prefix contoh : (7(3()(5()()))(11()())) */ BinTree Search(BinTree P,infotype I); /* Mengembalikan alamat simpul pohon P dimana nilai info = I, jika */ /* tidak ada mengembalikan Nil */ int NbElmt(BinTree P); /* Mengembalikan jumlah simpul dari pohon P, P mungkin kosong */ int NbDaun(BinTree P); /* Mengembalikan jumlah daun dari pohon P, P mungkin kosong */ int IsSkewLeft(BinTree P); /* Mengembalikan 1 jika P adalah pohon condong kiri, atau 0 jika /* bukan condong kiri */ int IsSkewRight(BinTree P); /* Mengembalikan 1 jika P adalah pohon condong kanan, atau 0 */ /* jika bukan condong kanan */ 56

57 int Level(BinTree P,infotype I); /* Mengembalikan level I dalam pohon P, jika I tidak ada dalam */ /* pohon P mengembalikan 0 */ void Add(BinTree *P,infotype I); /* I.S : P adalah pointer ke pohon biner P mungkin kosong, */ /* Pohon P tidak mempunyai simpul dengan nilai I */ /* F.S : I menjadi salah satu simpul pohon P, dan P tetap */ /* memenuhi aturan biner search tree */ /* Proses : menambahkan I menjadi salah satu simpul pohon P */ /* dengan aturan biner search tree */ void Del(BinTree *P,infotype I); /* I.S : P adalah pointer ke pohon biner P mungkin kosong, */ /* I bernilai sembarang */ /* F.S : Jika terdapat simpul dari P dengan nilai info = I, maka */ /* simpul dihapus */ /* Proses : Menghapus simpul dari pohon P jika nilai info = I dan P */ /* tetap memenuhi aturan biner search tree */ infotype Sum(BinTree P); /* Mengembalikan hasil penjumlahan semua nilai info dari setiap */ /* simpul yang dimiliki pohon P */ #endif // BST_H_ Praktik 1. Buat file boolean.h. 2. Ketik prototipe/primitif di atas dan simpan dengan nama bst.h. 3. Buat file.c yang berisi implementasi dari file.h. 4. Buat file main driver-nya. Evaluasi dan Pertanyaan 1. Tuliskan algoritma add dan delete tree di atas? 2. Buat kesimpulan Anda! Kesimpulan 57

58 10. Double Linked List Tujuan Setelah menyelesaikan modul ini, anda diharapkan dapat : 1. Memahami konsep double linked list dan mampu mengimplementasikannya ke bahasa C. 2. Mampu melakukan operasi add dan delete pada double linked list. Dasar teori Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat bergerak satu arah saja, maju/mundur, atau kanan/kiri sehingga pencarian data pada single linked list hanya dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan tersebut, dapat menggunakan metode double linked list. Linked list ini dikenal dengan nama Linked list berpointer Ganda atau Double Linked List. Double linked list adalah suatu senarai/list berkait dimana setiap node (elemen) mempunyai 2 penunjuk yaitu satu penunjuk ke node(elemen) pendahulunya (predesesor) dan satu penunjuk ke node (elemen) penerusnya (suksesor). Tambah di awal (addfirst) Operasi ini berguna untuk menambahkan elemen baru di posisi pertama. Langkah pertama untuk penambahan data adalah pembuatan elemen baru dan pengisian nilai infonya. Pointer yang menunjuk ke data tersebut dipanggil dengan nama baru. Kondisi di setelah ada pembuatan elemen baru tersebut adalah : Ada 2 kondisi yang harus diperhatikan dalam penambahan data di awal yaitu : a. Ketika linked list masih kosong 58

59 Kalau kondisi linked list masih kosong, maka elemen baru akan menjadi awal dan akhir linked list. Perhatikan gambar di bawah ini : Kondisi sebelum disisipkan Kondisi setelah operasi penambahan Operasi penambahan awal ketika linked list masih kosong adalah dengan mengisikan alamat pointer baru ke pointer awal dan pointer akhir. Lihat gambar di bawah ini. b. Ketika linked list sudah mempunyai data Kondisi linked list ketika sudah mempunyai data elemen dan elemen yang baru telah dibuat, dapat dilihat di gambar di bawah ini. Proses penambahan data di awal linked list adalah : Hubungkan baru kanan agar menunjuk ke awal Hubungkan awal kiri agar menunjuk ke posisi pointer baru 59

QUEUE Antrian 1. DEFINISI

QUEUE Antrian 1. DEFINISI QUEUE Antrian 1. DEFINISI QUEUE (Antrian) adalah list linier yang : 1. dikenali elemen pertama () dan elemen terakhirnya (), 2. aturan penyisipan dan penghapusan elemennya didefinisikan sebagai berikut:

Lebih terperinci

MODUL PRAKTIKUM STRUKTUR DATA

MODUL PRAKTIKUM STRUKTUR DATA MODUL PRAKTIKUM STRUKTUR DATA MODUL PRAKTIKUM STRUKTUR DATA LABORATORIUM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA 2011 Universitas Sriwijaya Fakultas Ilmu Komputer Laboratorium No. Dokumen

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

MODUL PRAKTIKUM STRUKTUR DATA MODUL PRAKTIKUM STRUKTUR DATA LABORATORIUM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA 2011 Universitas Sriwijaya Fakultas Ilmu Komputer Laboratorium LEMBAR PENGESAHAN MODUL PRAKTIKUM SISTEM

Lebih terperinci

Variasi List Linier (Bagian 2)

Variasi List Linier (Bagian 2) Variasi List Linier (Bagian 2) Tim Pengajar IF2030 Semester I/2009-2010 11/12/2009 FNA/IF2030/Sem. 1 2009-2010 1 List dengan elemen fiktif (dummy element) di akhir 11/12/2009 FNA/IF2030/Sem. 1 2008-2009

Lebih terperinci

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem List Linier IF2030/Algoritma dan Struktur Data 11/6/2009 FNA+WDS/IF2030/Sem 1 0809 1 List Linier List linier: Sekumpulan elemen ber-type sama yang mempunyai keterurutan tertentu dan setiap elemen terdiri

Lebih terperinci

Abstract Data Type (ADT)

Abstract Data Type (ADT) IKG2A3/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Abstract Data Type (ADT) 1 8/25/2015 Pendahuluan Pada bab ini kita akan membahas tentang Abstract Data Type (ADT) Mendefinisikan

Lebih terperinci

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB Pertemuan Ke 5 : List Linier (Linked List) Referensi: 1. Inggriani Liem. 2003. Catatan Kuliah & Pemrograman, Jurusan Teknik Informatika ITB 2. Rinaldi Munir. 2003. dan Pemrograman II. Bandung : Penerbit

Lebih terperinci

LIST LINIER 1. DEFINISI

LIST LINIER 1. DEFINISI LIST LINIER 1. DEFINISI List linier adalah sekumpulan elemen bertype sama, yang mempunyai keterurutan tertentu, dan setiap elemennya terdiri dari dua bagian, yaitu informasi mengenai elemennya, dan informasi

Lebih terperinci

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat STRUKTUR DATA Pengajar Jaidan Jauhari, M.T. Alamat Email jaidan_j@ilkom.unsri.ac.id jaidan_j@yahoo.com Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Informatika ITB Karangan Dr. Inggriani

Lebih terperinci

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen Pokok Bahasan Pengantar Struktur Data Pengertian Struktur Data Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai secara efisien Sedangkan data adalah representasi

Lebih terperinci

Struktur Data. Queue (Antrian)

Struktur Data. Queue (Antrian) Struktur Data Queue (Antrian) Definisi Queue (Antrian) adalah list linier yang : 1. Dikenali elemen pertama (Head) dan elemen terakhirnya (Tail) 2. Aturan penyisipan dan penghapusan elemennya didefinisikan

Lebih terperinci

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian) Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Queue (Antrian) 1 8/25/2015 Pendahuluan Pada bab ini kita akan membahas queue, yang sebenarnya mempunyai ADT hampir sama

Lebih terperinci

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit Soal No. 1 Berikut ini adalah program sirkular linked list terurut, lengkapilah bagian titik-titik dengan jawaban yang anda anggap benar. #include #include // enable malloc() and free()

Lebih terperinci

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String) Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String) Tim Pengajar IF2030 Semester I/2009-2010 12/10/2009 FNA/IF2030/Sem. 1 2008-2009 1 Pohon Biner

Lebih terperinci

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1 List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/2017 9/25/2017 IF2121/Sem I 2017/2018 1 List Linier List linier: Sekumpulan elemen ber-type sama yang mempunyai keterurutan tertentu

Lebih terperinci

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat  Halaman 1 STRUKTUR DATA Pengajar Jaidan Jauhari,, MT Alamat Email jaidan_j@ilkom.unsri.ac.id jaidan_j@yahoo.com Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Informatika ITB Karangan Dr. Inggriani

Lebih terperinci

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat  Halaman 1 STRUKTUR DATA Pengajar Jaidan Jauhari,, MT Alamat Email jaidan_j@ilkom.unsri.ac.id jaidan_j@yahoo.com Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Informatika ITB Karangan Dr. Inggriani

Lebih terperinci

STACK Tumpukan TOP TOP BOTTOM BOTTOM

STACK Tumpukan TOP TOP BOTTOM BOTTOM STACK Tumpukan I. DEFINISI STACK (Tumpukan) adalah list linier yang : 1. dikenali elemen puncaknya (TOP) 2. aturan penyisipan dan penghapusan elemennya tertentu : Penyisipan selalu dilakukan "di atas"

Lebih terperinci

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan) Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Stack (Tumpukan) 1 8/25/2015 Pendahuluan Pada bab ini kita akan membahas tentang stack (tumpukan) Struktur data stack

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

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

Pohon Biner (Bagian 1)

Pohon Biner (Bagian 1) Pohon Biner (Bagian 1) Tim Pengajar IF2110R Semester I 2016/2017 1 Tujuan Mahasiswa memahami definisi pohon dan pohon biner Berdasarkan pemahaman tersebut, mampu membuat fungsi sederhana yang memanipulasi

Lebih terperinci

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST BAB 6 LINKED LIST 1. Tujuan Instruksional Umum a. Mahasiswa dapat melakukan perancangan aplikasi menggunakan struktur Linked List (Senarai Berkait) b. Mahasiswa mampu melakukan analisis pada algoritma

Lebih terperinci

Representasi Logic List Linier

Representasi Logic List Linier IKG2A3/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Representasi Logic List Linier 1 8/25/2015 Pendahuluan Dalam bab ini, akan dibahas mengenai representasi logic dari list

Lebih terperinci

IKG2A3/ Pemrograman Terstruktur 2

IKG2A3/ Pemrograman Terstruktur 2 IKG2A3/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Representasi Fisik List Linier 1 8/25/2015 Pendahuluan Setelah representasi logic, perlu dilakukan represntasi fisik untuk

Lebih terperinci

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB Pertemuan Ke 6 : Representasi Fisik List Linier Referensi: 1. Inggriani Liem. 2003. Catatan Kuliah & Pemrograman, Jurusan Teknik Informatika ITB 2. Rinaldi Munir. 2003. dan Pemrograman II. Bandung : Penerbit

Lebih terperinci

MODUL 6 SINGLE & DOUBLE LINKED LIST

MODUL 6 SINGLE & DOUBLE LINKED LIST MODUL 6 SINGLE & DOUBLE LINKED LIST 1. Tujuan Instruksional Umum a. Mahasiswa dapat melakukan perancangan aplikasi menggunakan struktur Linked List (Senarai Berkait) b. Mahasiswa mampu melakukan analisis

Lebih terperinci

PDP 08 Dasar Pemrograman 2010

PDP 08 Dasar Pemrograman 2010 Dalam Tugas ini anda harus menyelesaikan dengan standar 3 file (driverttk.c,titik.h,titik.c dan boolean.h). Masalah yang harus anda selesaikan adalah mengenai pengolahan suatu titik dalam koordinat kartesius

Lebih terperinci

Bagian I. Studi Kasus [82] Tanda tangan:

Bagian I. Studi Kasus [82] Tanda tangan: UJIAN TENGAH SEMESTER GANJIL NIM: 2010/2011 dan Struktur Data / CS2014 Nama : HARI : Kamis, 30 Oktober 2009 WAKTU : 110 menit DOSEN : TIM SIFAT : Tutup Buku, No Electronic Device Tanda tangan: Petunjuk:

Lebih terperinci

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com Games and Quiz PT II by Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com Games 1 (a). Penyisipan selalu dilakukan di atas (b). Penghapusan selalu dilakukan pada elemen pertama (c). Penghapusan

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

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

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

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB IX LINKED LIST (SENARAI BERANTAI) BAB IX LINKED LIST (SENARAI BERANTAI) Linked list atau biasa disebut senarai berantai adalah suatu kumpulan data yang saling terhubung antar 1 data dengan data berikutnya. Suatu element (disebut dengan

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

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon) Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Tree (Pohon) 1 8/25/2015 Pendahuluan Dalam bab ini kita akan khusus membahas mengenai binary tree Pembahasan tentang tree

Lebih terperinci

Variasi List Linier. Nisa ul Hafidhoh, MT

Variasi List Linier. Nisa ul Hafidhoh, MT Variasi List Linier Nisa ul Hafidhoh, MT nisa@dsn.dinus.ac.id Variasi Variasi List dengan Dummy Circular List Double Linked list Variasi List dengan Dummy Elemen fiktif / elemen dummy : elemen yang sengaja

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

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

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier IKG2A3/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Variasi List Linier 1 8/25/2015 Pendahuluan Pada Bab ini kita akan membahas tentang beberapa di antara variasi list linier,

Lebih terperinci

Pohon Biner. Tim Pengajar IF2030 Semester I/ /8/2009 FNA/IF2030/Sem

Pohon Biner. Tim Pengajar IF2030 Semester I/ /8/2009 FNA/IF2030/Sem Pohon Biner Tim Pengajar IF2030 Semester I/2009-2010 12/8/2009 FNA/IF2030/Sem. 1 2008-2009 1 Contoh Persoalan - 1 Menu dalam Aplikasi Komputer Contoh (Ms Word): File Open Close Save Table Draw Insert Table

Lebih terperinci

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama : UJIAN AKHIR SEMESTER GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama : HARI : Rabu, 6 Januari 2010 Tanda tangan: WAKTU : 135 menit DOSEN : TIM SIFAT : Tutup Buku 1 2 3 4 5 T Petunjuk: Periksalah

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

A. Bagian I. Studi Kasus

A. Bagian I. Studi Kasus UJIAN TENGAH SEMESTER GANJIL 2008/2009 NIM: dan Struktur Data / CS2014 Nama : HARI : Rabu, 5 November 2008 WAKTU DOSEN SIFAT : 135 menit : TIM : Tutup Buku Tanda tangan: Petunjuk: Periksalah kelengkapan

Lebih terperinci

Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game

Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game Oleh: Adnan w Anadrep Selamat datang di tutorial ini, kali ini saya akan memberikan tutorial tentang pengimplementasian struktur 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

Catatan Kuliah PAM 282 STRUKTUR DATA

Catatan Kuliah PAM 282 STRUKTUR DATA Narwen, M.Si / Jurusan Matematika FMIPA Unand 1 PAM 282 Oleh Narwen, M.Si Jurusan Matematika FMIPA Unand Narwen, M.Si / Jurusan Matematika FMIPA Unand 2 BAB I PENDAHULUAN PENGERTIAN. Struktur data adalah

Lebih terperinci

LAPORAN PRAKTIKUM IX. Oleh:

LAPORAN PRAKTIKUM IX. Oleh: LAPORAN PRAKTIKUM IX LINKED LIST Disusun untuk Memenuhi Matakuliah Praktikum Algoritma Struktur Data Dibimbing oleh Ibu Annisa Puspa Kirana, S. Kom, M. Kom Oleh: Dwitha Fajri Ramadhani 160533611410 Ika

Lebih terperinci

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Pendahuluan Struktur Data. Nisa ul Hafidhoh Pendahuluan Struktur Data Nisa ul Hafidhoh nisa@dsn.dinus.ac.id 08156114760 Tujuan Mahasiswa dapat melakukan pemrograman dalam skala menengah dengan memanfaatkan struktur data internal yang kompleks dan

Lebih terperinci

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1 Array dan Matriks IF2121 / Algoritma dan Struktur Data Sem. 1 2017/2018 9/7/2017 IF2121/sem. 1 2017/2018 1 Array 9/7/2017 IF2121/sem. 1 2017/2018 2 Definisi Array adalah koleksi objek yang terdiri dari

Lebih terperinci

MATRIKS. Dapat disimpan secara linier dan kontigu dengan dua alternatif sebagai berikut : a. Per baris

MATRIKS. Dapat disimpan secara linier dan kontigu dengan dua alternatif sebagai berikut : a. Per baris MATRIKS Matriks adalah sekumpulan informasi yang setiap individu elemennya terdefinisi berdasarkan dua buah indeks (yang biasanya dikonotasikan dengan baris dan kolom). Setiap elemen matriks dapat diakses

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

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

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

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

Pendahuluan Struktur Data STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 1 : 20 Juni 2016

Pendahuluan Struktur Data STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 1 : 20 Juni 2016 Pendahuluan JULIO ADISANTOSO Departemen Ilmu Komputer IPB Pertemuan 1 : 20 Juni 2016 Pendahuluan Ilustrasi Kontrak Perkuliahan Permasalahan Suatu sistem pengolahan data kependudukan di Indonesia meliputi

Lebih terperinci

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK Prepared by: Ardianto Satriawan (02-2015) Pengenalan Pengertian Stack Pada Tugas Pendahuluan praktikum kali ini, anda tidak diminta

Lebih terperinci

Algoritma dan Struktur Data. Ramos Somya

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

Lebih terperinci

Struktur Program. Rinta Kridalukmana

Struktur Program. Rinta Kridalukmana Struktur Program Rinta Kridalukmana Struktur Program Struktur program merupakan suatu bentuk susunan dari suatu program yang dibuat. Secara umum, struktur program dibagi 3 bagian : Judul (header) Kamus

Lebih terperinci

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM 1. Mengerti dalam penggunaan pointer. 2. Dapat membuat larik dinamik dan daftar berkait TEORI PENUNJANG

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

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

Silabus Struktur Data. Bandung 2013

Silabus Struktur Data. Bandung 2013 Silabus Struktur Data Bandung 2013 Silabus u Menjelaskan Varian dan Invarian u Membuat Alur Logika pemrograman u Menerapkan Pengelolaan Array u Memelihara Pekerjaan secara prakds u Menerapkan konsep data

Lebih terperinci

Stack. Pointer ke node pertama dari stack. Bagian deklarasi di atas kita asumsikan disimpan menjadi sebuah header file dengan nama stack.

Stack. Pointer ke node pertama dari stack. Bagian deklarasi di atas kita asumsikan disimpan menjadi sebuah header file dengan nama stack. Stack Sekilas Tentang Stack Stack dapat diimplementasikan dengan menggunakan konsep Linked List. Bentuk dari struct dari head untuk stack dapat digambarkan sebagai berikut: Pointer ke node pertama dari

Lebih terperinci

BAB 1 PENGANTAR KE STRUKTUR DATA

BAB 1 PENGANTAR KE STRUKTUR DATA Struktur Data - 1 BAB 1 PENGANTAR KE STRUKTUR DATA 1.1 Mengapa Struktur Data Diperlukan? Struktur data adalah cara mengorganisakan data di memori komputer. Bagaimana data diorganisasikan (struktur data)

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

{ Kamus Umum } constant IdxMax : integer = 100 constant IdxMin : integer = 1 constant IdxUndef : integer = -999 { indeks tak terdefinisi}

{ Kamus Umum } constant IdxMax : integer = 100 constant IdxMin : integer = 1 constant IdxUndef : integer = -999 { indeks tak terdefinisi} P-05. ADT TABEL KONTIGU Bagian 1. Representasi Eksplisit Statik 1. Buatlah ADT Tabel Kontigu dengan representasi eksplisit dan alokasi memori statik sesuai dengan definisi dan spesifikasi di bawah ini

Lebih terperinci

SINGLE LINKED LIST (NON CIRCULAR)

SINGLE LINKED LIST (NON CIRCULAR) SINGLE LINKED LIST (NON CIRCULAR) KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu

Lebih terperinci

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A. DIKTAT KULIAH STRUKTUR DATA Disusun oleh: Sri Primaini A. FAKULTAS ILMU KOMPUTER UNIVERSITAS INDO GLOBAL MANDIRI PALEMBANG 2016 DAFTAR ISI Halaman BAB 1 PENGANTAR KE STRUKTUR DATA... 1 1.1 Mengapa Struktur

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

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pertemuan 1 STRUKTUR DATA Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pemakaian Struktur Data yang

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

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-3 (Tipe Data dan Nama) 1 Sub Pokok Bahasan Pendahuluan Tipe Dasar Tipe Bentukan Nama 2 Pendahuluan Tipe adalah pola representasi data dalam komputer Tipe data dapat dikelompokkan

Lebih terperinci

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK BAB IV ANALISIS DAN PERANCANGAN PERANGKAT LUNAK Bab ini membahas analisis perancangan perangkat lunak (diberi nama c2p) dari segi struktur data dan analisis aliran data. Hal-hal yang dibahas diantaranya

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

Sub Program : Prosedur. Tim Pengajar KU1071 PTI A Semester I 2009/2010

Sub Program : Prosedur. Tim Pengajar KU1071 PTI A Semester I 2009/2010 Sub Program : Prosedur Tim Pengajar KU1071 PTI A Semester I 2009/2010 Tujuan Perkuliahan Mahasiswa memahami makna dan kegunaan prosedur sebagai salah satu sub program Mahasiswa dapat menggunakan notasi

Lebih terperinci

2 ATURAN PENULISAN TEKS ALGORITMA

2 ATURAN PENULISAN TEKS ALGORITMA 2 ATURAN PENULISAN TEKS ALGORITMA Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun, asalkan mudah dimengerti dan dipahami. Tidak

Lebih terperinci

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan. Struktur Data Struktur Data Setiap data memiliki tipe data, apakah merupakan angka bulat, angka pecahan, atau berupa karakter, dan sebagainya. Jadi, tipe data adalah pengelompokan data berdasarkan isi

Lebih terperinci

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD Pertemuan 4 : Definisi & Operasi Disusun oleh : PH. Prima Rosa, S.Si., M.Sc. Sri Hartati Wijono, S.Si. 2003/2004 Pert. 4b Struktur Data - FMIPA USD - 2003 Hal. 1 Struktur Data PROBLEM ALGORITHM DATA IMPLEMENTATION

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

LIST LINIER & STACK. Pertemuan 6 Yani sugiyani, M.Kom

LIST LINIER & STACK. Pertemuan 6 Yani sugiyani, M.Kom LIST LINIER & STACK Pertemuan 6 Yani sugiyani, M.Kom 1 LIST LINIER Yani Sugiyani, M.Kom 2 LIST LINIER List linier atau daftar linier adalah suatu struktur data umum yang terbentuk dari barisan hingga (yang

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

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pertemuan 1 STRUKTUR DATA Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pemakaian Struktur Data yang

Lebih terperinci

Subprogram (dalam Bahasa C++ + Flowchart)

Subprogram (dalam Bahasa C++ + Flowchart) Subprogram (dalam Bahasa C++ + Flowchart) Tim Penyusun Materi PTI-B KU1072/Pengenalan Teknologi Informasi B Tahap Tahun Pertama Bersama Institut Teknologi Bandung Tujuan Mahasiswa memahami makna dan kegunaan

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

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Senarai, Traversal Deklarasi global: type TInfo = integer type Address = pointer to Elemen

Lebih terperinci

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pertemuan 1 STRUKTUR DATA Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pemakaian Struktur Data yang

Lebih terperinci

Mesin Karakter dan Mesin Kata

Mesin Karakter dan Mesin Kata Mesin Karakter dan Mesin Kata Tim Pengajar IF2030/Algoritma dan Struktur Data 10/15/09 FNA/IF2030/Mesin Kata 1 Mesin Mesin: mekanisme yang terdefinisi dan mengerti serta mampu untuk mengeksekusi aksi-aksi

Lebih terperinci

BAB 3 STACK (TUMPUKAN)

BAB 3 STACK (TUMPUKAN) BAB 3 STACK (TUMPUKAN) LINIER LIST Suatu struktur data umum yang berisi suatu kumpulan terurut dari elemen; jumlah elemen di dalam list dapat berubah-ubah. Linier list A yang terdiri dari T elemen pada

Lebih terperinci

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer PERTEMUAN VI POINTER 6.1 Tujuan Praktikum Praktikan mengenal type data Pointer, mengerti tentang konsep dasar dari pointer, dapat mendeklarasikan pointer di Pascal serta dapat menggunakannya di dalam sebuah

Lebih terperinci

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1 Pengenalan Algoritma & Struktur Data Pertemuan ke-1 Apa itu Struktur Data? PROGRAM ALGO RITMA STRUKTUR DATA Algoritma.. deskripsi langkah-langkah penyelesaian masalah yang tersusun secara logis 1. Ditulis

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

S T A C K ( T U M P U K A N )

S T A C K ( T U M P U K A N ) S T A C K T U M P U K A N ) LINIER LIST Suatu struktur data umum yang berisi suatu kumpulan terurut dari elemen; jumlah elemen di dalam list dapat berubah-ubah. Linier list A yang terdiri dari T elemen

Lebih terperinci

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e 03 LINKED LIST Slide 0 voice Pada perkuliahan ini kita akan membahas topik linked list atau senarai berkait. Slide 1 voice Terdapat tujuh bilangan bulat yang nilainya terurut secara menaik (ascending)

Lebih terperinci

DIG1G3 Implementasi Struktur Data

DIG1G3 Implementasi Struktur Data DIG1G3 Implementasi Struktur Data Program Studi Diploma III Teknik Informatika Fakultas Ilmu Terapan Telkom University Dosen: Cahyana, S.T., M.Kom. Indra Azimi, S.T., M.T. 2 Stack (Tumpukan) Stack is a

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

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

Pengantar Bahasa C. Tim Pengajar ASD Semester I 2017/ /7/2017 FN/ASD/Sem /2018 1

Pengantar Bahasa C. Tim Pengajar ASD Semester I 2017/ /7/2017 FN/ASD/Sem /2018 1 Pengantar Bahasa C Tim Pengajar ASD Semester I 2017/2018 9/7/2017 FN/ASD/Sem. 1 2017/2018 1 C Programming Language Sejarah Singkat Dikembangkan oleh Dennis Ritchie dan Brian Kernighan pada awal 1970an

Lebih terperinci

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION POINTER POINTER ADALAH SUATU VARIABEL PENUNJUK, BERISI NILAI YANG MENUNJUK ALAMAT SUATU LOKASI MEMORI TERTENTU. JADI POINTER TIDAK BERISI NILAI DATA, MELAINKAN

Lebih terperinci