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

Ukuran: px
Mulai penontonan dengan halaman:

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

Transkripsi

1 STRUKTUR DATA Pengajar Jaidan Jauhari,, MT Alamat Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Informatika ITB Karangan Dr. Inggriani Liem Halaman 1

2 SILABUS MATERI KULIAH Pengantar Struktur Data Review Record dan Array Stack (Tumpukan) Queue (Antrian) Linked List dan Variasi List MultiList Pohon Biner Graph Halaman 2

3 BUKU SUMBER 1. Inggriani Liem Diktat Kuliah Algoritma dan Pemrograman Prosedural. Bandung : ITB 2. Inggriani Liem Diktat Kuliah Struktur Data. Bandung : ITB 3. Rinaldi Munir Algoritma dan Pemrograman II. Bandung : Penerbit Informatika 4. Bambang Wahyudi Struktur Data dan Algoritma. Yogyakarta : Andi Offset 5. Dwi Sanjaya Bertualang dengan Struktur Data di Planet Pascal. Yogyakarta : JJ Learning 6. P. Insap Santoso Struktur Data dengan Turbo Pascal. Yogyakarta : Andi Offset Halaman 3

4 Komponen Penilaian Tugas 20% Ujian 1 20 % (Pertemuan ke-4) Ujian 2 20% (Pertemuan ke-8) Ujian 3 20% (Pertemuan ke-12) Ujian Akhir Semester 20% Halaman 4

5 Aturan dan Sanksi-sanksi sanksi Kehadiran minimal 80%, kurang dari 80% tidak lulus (mendapat nilai E) Keterlambatan maksimal 10 menit (Lebih dari 10 menit tidak diijinkan memasuki ruangan) Pengumpulan Tugas yang melebihi waktu yang telah ditentukan akan diberikan nilai nol Kecurangan dalam bentuk apapun akan mendapatkan nilai E Mahasiswa berpakaian rapi dan sopan, yang ditunjukkan antara lain 1. Memakai sepatu tertutup 2. Memakai baju berkerah 3. Tidak memakai aksesoris yang tidak diijinkan 4. Tidak memakai pakaian yang kurang dasar atau lebih dasar 5. dan lain-lain Selama perkuliahan berlangsung mahasiswa tidak diijinkan meninggalkan ruang kuliah kecuali sangat terpaksa dan itupun harus membuat surat ijin dan hanya boleh satu kali Halaman 5

6 PENGERTIAN STRUKTUR DATA Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer bisa dipakai secara efisien agar Sedangkan data adalah representasi dari nyata. fakta dunia Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol Halaman 6

7 Secara garis besar type data dapat dikategorikan menjadi : 1. Type data sederhana a. Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter b. Type data sederhana majemuk, misalnya String 2. Struktur Data, meliputi a. Struktur data sederhana, misalnya array dan record Halaman 7

8 b. Struktur data majemuk, yang terdiri dari Linier : Stack, Queue, serta List dan Multilist Non Linier : Pohon Biner dan Graph Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana. Halaman 8

9 Struktur data yang standar yang biasanya digunakan dibidang informatika adalah : List linier (Linked List) dan variasinya Multilist Stack (Tumpukan) Queue (Antrian) Tree ( Pohon ) Graph ( Graf ) Halaman 9

10 REVIEW RECORD (REKAMAN) Disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram. Rekaman disebut juga tipe terstruktur. Contoh : 1. type Titik : record <x : real, y : real> jika P dideklarasikan sebagai Titik maka mengacu field pada P adalah P.x dan P.y. Halaman 10

11 2. Didefinisikan tipe terstruktur yang mewakili Jam yang dinyatakan sebagai jam (hh), menit (mm) dan detik (ss), maka cara menulis type Jam adalah : type JAM : record <hh : integer, {0 23} mm : integer, {0 59} ss : integer {0 59} > Jika J adalah peubah (variabel) bertipe Jam maka cara mengacu tiap field adalah J.hh, J.mm dan J.ss Halaman 11

12 Terjemahan dalam bahasa C : 1. type Titik : record <x : real, y : real> diterjemahkan menjadi : typedef struct { float x; float y; } Titik; 2. type JAM : record <hh : integer, {0 23} mm : integer, {0 59} ss : integer {0 59} > Diterjemahkan menjadi : typedef struct { int hh; /*0 23*/ int mm; /*0 59*/ int ss; /*0 59*/ } Jam; Halaman 12

13 REVIEW ARRAY (LARIK) 1. Pendahuluan Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan misalnya integer atau karakter. Halaman 13

14 Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur atau tipe larik lain. Nama lain array adalah Larik, tabel atau vektor Halaman 14

15 Cara Pendefinisian Array 1. Sebagai Peubah Contoh : L : array[1..50] of integer NamaMhs : array[ a.. j ] of string 2. Sebagai tipe baru Contoh : type LarikInt : array[1..100] of integer P : LarikInt Halaman 15

16 3. Mendefinisikan ukuran maksimum elemen larik sebagai konstanta Contoh : Const Nmaks = 100 type Larikint : array[1..nmaks] of integer P : LarikInt Cara menterjemahkan ke bahasa C : #define Nmaks 100 typedef int Larikint[Nmaks+1]; Larikint P; Halaman 16

17 Cara Mengacu Elemen Larik Elemen larik diacu melalui indeksnya. Nilai indek harus terdefinisi. Contoh cara mengacu elemen larik adalah : L[4] {mengacu elemen keempat dari larik L } NamaMhs[ b ] {mengacu elemen kedua dari larik NamaMhs} P[k] {mengacu elemen ke-k dari larik P, asalkan nilai k sudah terdefinisi } Halaman 17

18 Menginisialisasi Larik menginisialisasi elemen larik adalah memberikan harga awal untuk seluruh elemen larik, misalnya menginisialisasi dengan nilai 0 seperti di bawah ini : Procedure InisDgn0(output A:larik, input N:integer) {menginisialisasi setiap elemen larik A[1..N] dengan nol} {K. Awal : N adalah banyak elemen efektif larik, nilainya terdefinisi} {K. Akhir : seluruh elemen larik A bernilai nol} Deklarasi : K : integer Deskripsi : for k 1 to N do A[k] 0 endfor Halaman 18

19 Mengisi elemen larik dari piranti masukan Elemen larik dapat diisi dengan nilai yang dibaca dari piranti masukan seperti contoh di bawah ini : Procedure BacaLarik(output A:larik, input N:integer) {mengisi elemen larik A[1..N] dengan nilai yang dibaca dari piranti masukan} {K. Awal : N adalah jumlah elemen efektif larik, nilainya terdefinisi} {K. Akhir : seluruh elemen larik A berisi nilai-nilai yang dibaca dari piranti masukan} Deklarasi : K : integer Deskripsi : for k 1 to N do read (A[k]) endfor Halaman 19

20 Larik Bertype Terstruktur Larik tidak hanya dapat berisi data bertype tunggal, tapi dapat juga berisi data yang bertipe terstruktur Contoh : const Nmaks = 100 type Mahasiswa : record <nim : integer, nama_mhs : string, KodeMK : string, Nilai : char > TabMhs : array[1..nmaks] of Mahasiswa Halaman 20

21 Contoh Cara mengacu elemen TabMhs : 1. TabMhs[2].Nim mengacu field Nim dari elemen kedua larik 2. Write(TabMhs[k].KodeMK) menuliskan field KodeMK dari elemen ke k dari larik Halaman 21

22 Tugas 1 Buatlah dalam notasi algoritma atau bahasa C : 1.Definisikan sebuah type terstruktur untuk menyatakan data nasabah disebuah bank. Data nasabah terdiri atas field Nomor Account, Nama Nasabah, Alamat Nasabah, Kota Nasabah, dan Nomor Telpon Nasabah. Untuk setiap field definisikan type data yang cocok Halaman 22

23 2.Dari soal nomor 1 buatlah program dalam bahasa pemrograman berbasis bahasa C, untuk memasukkan data nasabah sebanyak N, dengan N diinputkan dari papan ketik, kemudian menuliskan kembali semua data nasabah dalam bentuk matrik. Petunjuk : Gunakan notasi pengulangan untuk menyelesaikan permasalahan tersebut Tugas dikumpulkan pada pertemuan berikutnya disertai listing program dan contoh keluarannya Halaman 23

24 ADT (Abstract Data Type) ADT adalah definisi type dan sekumpulan primitif (operasi dasar) terhadap type tersebut. Type diterjemahkan menjadi type terdefinisi dalam bahasa pemrograman yang bersangkutan, misalnya menjadi record dalam Pascal/Ada dan Struct dalambahasac Halaman 24

25 Primitif dalam konteks pemrograman prosedural, diterjemahkan menjadi fungsi dan prosedur. Primitif dikelompokkan menjadi : 1. Konstruktor/Kreator, pembentuk nilai type. Biasanya namanya diawali dengan Make. 2. Selektor, untuk mengakses komponen type. Biasanya namanya diawali dengan Get. Halaman 25

26 3. Prosedur Pengubah nilai komponen 4. Validator komponen type, yang dipakai untuk mengetes apakah dapat membentuk type sesuai batasan. 5. Destruktor/Dealokator, yaitu untuk menghancurkan nilai objek, sekaligus memori penyimpannya 6. Baca/tulis, untuk interface dengan input/output device Halaman 26

27 7. Operator Relasional terhadap type tersebut untuk mendefinisikan lebih besar, lebih kecil, sama dengan dan sebagainya. 8. Aritmatika terhadap type tersebut, dalam pemrograman biasanya hanya terdefinisi untuk bilangan numerik. 9. Konversi dari type tersebut ke type dasar dan sebaliknya Halaman 27

28 ADT biasanya diimplementasi menjadi dua buah modul, yaitu : 1. Definisi/spesifikasi type dan primitif - Spesifikasi type sesuai dengan bahasa yang dipakai - Spesifikasi dari primitif sesuai dengan kaidah dalam konteks prosedural, yaitu : a. Fungsi : nama, domain, range, dan pre kondisi jika ada b. Prosedur : Keadaan Awal, Keadaan Akhir dan proses yang dilakukan 2. Body/realisasi dari primitif, berupa kode program dalam bahasa yang bersangkutan. Realisasi fungsi dan prosedur harus sedapat mungkin memanfaatkan Selektor dan Konstruktor Halaman 28

29 4. Linked List (List Linier) 4.1. Definisi List linier adalah sekumpulan elemen bertype sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian : Type Elmtlist = record < Info : InfoType, Next : address > Halaman 29

30 Dengan Info Type adalah sebuah type terdefenisi yang menyimpan informasi sebuah elemen list ; Next adalah address dari elemen berikutnya ( suksesor ). Dengan demikian, jika didefinisikan First adalah alamt elemen pertama list, maka elemen berikutnya dapat diakses secara suksesif dari elemen pertama tersebut Halaman 30

31 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 field NEXT setiap elemen mempunyai alamat, yaitu tempat elemen disimpan dapat diacu.untuk mengacu sebuah elemen, alamat harus terdefenisi. Dengan alamat tersebut Informasi yang tersimpan pada elemen list dapat diakses. elemen terakhirnya. Ada berbagai cara untuk mengenali elemen akhir Halaman 31

32 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 : Info(P) Next(P) Halaman 32

33 Beberapa defenisi : 1. List L adalah List kosong, jika First (L) = Nil 2. Elemen terakhir dikenali, dengan salah satu cara adalah karena Next(Last) =Nil Halaman 33

34 II. Skema traversal untuk list linier List terdiri dari sekumpulan elemen. Seringkali diperlukan untuk memproses setiap elemen list dengan cara yang sama. Karena itu salah primitif operasi konsultasi dasar pada struktur list adalah traversal, yaitu mengunjungi setiap elemen list untuk diproses. Halaman 34

35 Karena Urutan akses adalah dari elemen pertama sampai dengan elemen terakhir, maka traversal list secara natural dilakukan dari elemen pertama, suksesornya, dan seterusnya sampai dengan elemen terakhir. Halaman 35

36 Skema traversal yang dipakai adalah Sbb : Procedure SKEMAListTransversal1( Input L : List ) {K. Awal : List L terdefinisi, mungkin kosong } {K. Akhir : semua elemen list L dikunjungi dan telah diproses } {Proses : Traversal sebuah list linier. Dengan MARK, tanpa pemrosesan khusus pada list kosong} Deklarasi Halaman 36

37 Deklarasi : P : address { address untuk traversal, type terdefenisi } Deskripsi : Inisialisasi P First ( L ) { First Element } While ( P Nil ) do Proses ( P ) P Next ( P ) { Next element } endwhile Terminasi Halaman 37

38 Procedure SKEMAListTransversal 2( Input L : List ) { K. Awal : List L terdefenisi, mungkin kosong } { K. Akhir : semua elemen list L dikunjungan dan telah diproses } { Proses : Transversal sebuah list linier yang diidentifikasi oleh elemen pertama L, Dengan MARK dan pemrosesan khusus pada list kosong } Deklarasi : Halaman 38

39 Deklarasi P : address Deskripsi { address untuk traversal, type terdefenisi } If (First ( L ) = Nil) then else Write ( List kosong ) Halaman 39

40 Insialisasi P First ( L ) { First Element } Repeat Proses ( P ) P Next ( P ) { Next element } until P=Nil Terminasi Halaman 40

41 III. Skema Sequential Search untuk list linier Selain traversal, proses pencarian suatu elemen list adalah primitif yang sering kali didefinisikan pada struktur list. Pencarian dapat berdasarkan nilai, atau berdasarkan alamat. III.1. Search suatu Nilai, output adalah address Search ini sering dipakai untuk mengenali suatu elemen list berdasarkan nilai informasi yang disimpan pada elemen yang dicari. Biasanya dengan alamat yang ditemukan, akan dilakukan suatu proses terhadap elemen Halaman 41 list tersebut.

42 Procedure SKEMAListSearch1 ( Input L : List, X : InfoType, Output P : address, Found: Boolean ) { K. Awal : List linier L sudah terdefinisi dan siap dikonsultasi, X terdefenisi } { K.Akhir : P : address pada pencarian beurutan, dimana X diketemukan, P = Nil jika tidak ketemu, Found berharga true jika harga X yang dicari ketemu, false jika tidak } Halaman 42

43 {Proses : Sequential Search harga X pada sebuah list linier L, Semua elemen diperiksa dengan intruksi yang sama, versi dengan Boolean} Deklarasi Deskripsi Halaman 43

44 P First ( L ) Found false While ( P Nil ) and ( not found ) do if X = Info (P) then Found True else P Next (P) endif endwhile { P = Nil or Found} {Jika Found maka P adalah address dimana harga yang dicari diketemukan} Halaman 44

45 III. 2. Search suatu Elemen yang beralamat tertentu Procedure SKEMAList Input L : List, P : address, Found: Boolean ) {K. Awal : List linier L sudah terdefinisi dan siap dikonsultasi, X terdefenisi } {K.Akhir : Jika ada elemen list beralamat P, Found berharga true, Jika tidak ada elemen list beralamat P, Found berharga false } {Proses : Sequential P pada sebuah list linier L, Semua elemen diperiksa dengan intruksi yang sama } Halaman 45

46 Deklarasi Pt : address Deskripsi Pt First ( L ) Found false While ( Pt Nil ) and ( not found ) do if Pt = P then Found true else Pt Next (Pt) endif endwhile { Pt = Nil or Found} { Jika Found maka P adalah elemen list} Halaman 46

47 IV. Definisi fungsional list linier dan algoritmanya Secara fungsional, pada sebuah list linier biasanya dilakukan pembuatan, penambahan atau penghapusan elemen yang dapat ditulis sebagai berkut : Jika diberikan L, L1 dan L2 adalah list linier dengan elemen ElmtList, maka operasi yang dapat dilakukan : ListEmpty, CreateList, Insert, Delete, Concat dan UpdateList Halaman 47

48 IV. 1. Pengetesan List Kosong Pemeriksaan apakah sebuah list kosong sangat penting, karena Keadaan Awal dan Keadaan Akhir beberapa prosedur harus didefinisikan berdasarkan keadaan list. Operasi pada list kosong sering kali membutuhkan penanganan khusus Realisasi algoritmik dari definisi fungsional ini adalah sebuah fungsi sebagai berikut. Halaman 48

49 Function IsEmptyList (L : List ) boolean { Test apakah sebuah list L kosong, Mengirimkan true jika list kosong, false jika tidak kosong} Deklarasi Deskripsi return(first (L) = Nil) Halaman 49

50 IV.2 Pembuatan sebuah elemen pada list linier Pembuatan sebuah list berarti membuat sebuat list KOSONG, yang selanjutnya siap diproses (ditambah elemennya, dsb). Realisasi algoritmik dari defenisi funfsional ini adalah sebuah prosedur sebagai berikut. Halaman 50

51 Procedure CreateList( Output L : List ) {K. Awal : Sembarang } K. Akhir : terbentuk list L yang kosong : First (L) diinisialisasi dengan NIL ) Proses : Membuat list kosong} Deklarasi Deskripsi First (L) Nil Halaman 51

52 IV. 3 Penyisipan sebuah elemen pada list linier Fungsi insert (penyisipan) harus dijabarkan lebih rinci, karena dapat menjadi penyisipan sebagai elemen pertama, setelah sebuah address P atau penyisipan menjadi elemen terakhir atau bahkan menjadi elemen ditengah Penyisipan sebuah elemen dapat dilakukan terhadap sebuah elemen yang sudah dialokasi (diketahui address-nya ), atau sebuah elemen yang hanya diketahui nilai Info-nya (berarti belum dialokasi). Halaman 52

53 IV INSERT-First (Address) Menambahkan sebuah elemen yang diketahui alamatnya sebagai elemen pertama list. Procedure InsertFirst (Input/Output L:List, Input P: address) {K. Awal : List L mungkin kosong {K. Akhir : P adalah elemen pertama list L} {Proses : Insert sebuah elemen beralamat P sebagai elemen pertama list linier L yang mungkin kosong} Deklarasi Deskripsi Next (P) First (L) First (L) P Halaman 53

54 IV.2.2 INSERT-First (Nilai) Menambahkan sebuah elemen yang diketahui nilainya sebagai elemen pertama list. Procedure InsFirst (Input/output L :List, Input E : infotype ) { K. Awal : List L mungkin kosong } { K. Akhir : Sebuah elemen dialokasikan dan menjadi elemen pertama list L, jika alokasi berhasil. Jika alokasi gagal list tetap seperti semula } { Proses : Insert sebuah elemen sebagai elemen pertama list} Deklarasi P : address Deskripsi Alokasi (P) If P Nil then Info (P) E Next (P) First (L) First (L) P Halaman 54

55 IV.2.2. INSERT-AFTER Menyisipkan sebuah elemen beralamat P sebagai suksesor dari sebuah elemen list linier yang beralamat Prec Procedure InsertAfter ( Input P, Prec: address ) {K. Awal : Prec adalah elemen list, prec Nil, P sudah dialokasikan, P Nil, Next (P) = Nil K. Akhir : P menjadi suksesor Prec Proses : Insert sebuah elemen beralamat P pada List linier L} Deklarasi Deskripsi Next (P) Next (Prec) Next (Prec) P Halaman 55

56 IV INSERT Last Menyisipkan sebuah elemen beralamat P sebagai elemen terakhir sebuah list linier. Ada dua kemungkinan list kosong atau tidak kosong Procedur InsertLast@(Input/Output L: List, Input P : address) {K. Awal : List L mungkin kosong, P sudah dialokasi, P Nil, Next (P) = Nil K. Akhir : P adalah elemen terakhir list L Proses : Insert sebuah elemen beralamat P sbg elemen terakhir dari list linier L yg mungkin kosong } Halaman 56

57 Deklarasi Last : address { address untuk traversal} Deskripsi If Fisrt (L) = Nil then { insert sebagai elemen pertama} InsertFirst(L, P) Else { Traversal list sampai address terakhir} Last First (L) While (Next (Last ) Nil ) do Last Next (Last ) endwhile {Next ( Last) = Nil, Last adalah elemen terakhir; insert P after last } InsertAfter (P, Last) endif Halaman 57

58 Procedure InsertLast(Input/output L :List, Input E : Infotype) { K. Awal : List L mungkin kosong, P sudah dialokasi, P Nil, Next(P)=Nil K. Akhir : P adalah elemen terakhir list L Proses : Insert sebuah elemen beralamat P sebagai elemen terakhir dari list linier L yang mungkin kosong } Deklarasi Last : address { address untuk traversal } Deskripsi Alokasi (P) If (P Nil) then Info(P) E InsertLast@(L,P) Halaman 58

59 IV.3. Penghapusan sebuah elemen pada list linier Penghapusan harus dijabarkan lebih rinci, Karena penghapusan elemen dapat merupakan pertama, setelah sebuah address P atau penghapusan elemen terakhir. Perbedaan ini melehirkan 3 operasi dasar penghapusan elemen list yang diturunkan dari definisi fungsional inimenjadi realisasi algoritma. Operasi penghapusan dapat mengakibatkan list kosong, jika list semula hanya terdiri dari satu elemen. Halaman 59

60 IV.3.1. DELETFirst : menghapus elemen pertama list linier a. Elemen yang dihapus dicatat alamatnya Procedure DeleteFirst@ (Input/Output L : List, Output P : address) {K. Awal : List L tidak kosong, minimal 1 elemen pertama pasti ada } {K. Akhir : menghapus elemen pertama L P elemen pertama L sebelum penghapusan, L yang baru adalah Next (L) Deklarasi Deskripsi P First (L) First (L) Next ( First (L) ) Halaman 60

61 Procedure DeleteFirst (Input/Output L : List, Output E : InfoType) {K. Awal : List L tidak kosong, minimal 1 elemen pertama pasti ada } {K. Akhir : menghapus elemen pertama L E adalah Nilai elemen pertama L sebelum penghapusan, L yang baru adalah Next (L) Deklarasi Deskripsi P First (L) E Info (P) First (L) Next ( First (L) ) Dealokasi (P) Halaman 61

62 IV Delete After : Penghapusan suksesor sebuah elemen : Procedure DeleteAfter ( Input Prec : adrress, Output P : address ) { K. Awal : List tidak kosong, Prec adalah elemen list, Next (Prec) Nil } Prec elemen terakhir K. Akhir : Menghapus suksesor Prec, P suksesor Prec sebelum penghapusan, Next (Prec) yang baru adalah suksesor dari suksesor Prec sebelum penghapusan } Deklarasi Deskripsi P Next (Prec) Next (Prec) Next (Next (Prec)) Halaman 62

63 Dengan primitip ini, maka penghapusan sebuah beralamat P dapat dilakukan dengan : mencari predesesor dari P, yaitu alamat Prec memakai DeleteAfter (Prec) Procedure DeleteP ( Input/Output L ; List, Output P : address ) { K. Awal : List L tidak kosong, P adalah elemen list L K. Akhir : Menghapus P dari list, P mungkin elemen pertama, tengah atau terakhir } Deklarasi Prec : address { alamat predesesor } Deskripsi Halaman 63

64 { Cari predesesor P } if (P = First (L) then {Delete list dengan satu elemen } DeleteFirst (L,P) else Prec First (L) While (Next(Prec) P ) do Prec Next (Prec) endwhile { Next (Prec) = P, hapus P } DeleteAfter (Prec, P) endif Halaman 64

65 IV DELETELast : Menghapus elemen terakhir list dapat dilakukan jika alamat dari elemen 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. Procedure DeleteLast (Input L : List, Output P : address) {K. Awal : List L tidak kosong, minimal mengandung 1 elemen K. Akhir : menghapus elemen terakhir dari list, list mungkin menjadi kosong Proses : P adalah alamat elemen terakhir list sebelum penghapusan } Halaman 65

66 Deklarasi Last, preclast :address { address untuk traversal } Deskripsi { Find last dan address sebelum last } Last First (L) Preclast Nil { predesesor dari L tak terdefenisi } While ( Next ( Last ) Nil do { Traversal list terakhir } Preclast Last ; Last Next ( last ) endwhile { Next ( Last ) = Nil, Last adalah elemen terakhir; preclast = sebelum last } P Last If Preclast = Nil then { list dg 1 elemen, jadi kosong } First(L) Nil Else Next ( preclast ) Nil endif Halaman 66

67 IV. 5. Konkatenasi dua buah list linier Concat adalah menggabungkan dua list. Dalam contoh berikut list kedua disambungkan ke list pertama. Jadi Last (L1) menjadi predesesor First (L2). Realisasi algoritma adalah sebuah prosedur sebagai berikut : Procedure CONCAT (Input L1, L2 : List, Output : L3 : List ) {K. awal : L1 L2, L1 L3,dan L3 L2; L1, L2 mungkin kosong K. Akhir : L3 adalah hasil konkatenasi (menyambung) dua buah list linier, L2 ditaruh dibelakang L1 } Halaman 67

68 Deklarasi Last1 : address { alamat elemen terakhir list pertama } Deskripsi Cratelist (L3) {inisialisasi list hasil } If Fist (L1) = Nil then Else endif First (L3) First (L2) { Traversal list 1 sampai address terakhir, Hubungkan last dengan Fisrt 2} First (L3) First (L1) Last1 First (L1) While ( Next (Last 1 ) Nil ) do Last1 Next (Last 1) endwhile {Next ( Last 1) First (L2)} Next(Last1) First (L2)} Halaman 68

69 Bagian Deklarasi dari algoritma pada List Linier : Deklarasi type InfoType = {Sebuah type terdefinisi} type Address pointer to ElmtL type ElmtL = record <Info : InfoType, Next : Address > type List = record <First : Address > {Deklarasi Nama Peubah} L : List P : Address Halaman 69

70 Soal-Soal Latihan I. Apakah perbedaan struktur data list linier ditinjau dari sudut pandang operasinya, jika dibandingkan dengan struktur data stack dan queue? II. Untuk data yang bagaimanakah yang dapat direpresentasikan dengan menggunakan struktur data list linier? III. Diketahui sebuah list linier dengan elemen bertipe integer, buatlah : 1. Sebuah prosedur untuk menghitung jumlah elemen list yang genap 2. Prosedur untuk menghitung rata-rata elemen list yang ganjil Halaman 70

71 3. Prosedur untuk menghitung banyaknya elemen list yang positif (lebih besar dari nol) 4. Prosedur untuk mencetak elemen list yang genap IV. Diketahui sebuah list dengan elemen bertype integer terurut membesar, buatlah : 1. Fungsi untuk mengirimkan elemen pertama list 2. Fungsi untuk mencari elemen list yang minimum 3. Fungsi untuk menghitung banyaknya elemen yang lebih besar dari 100 Halaman 71

72 5. Stack (Tumpukan( Tumpukan) 5.1. Definisi 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 Halaman 72

73 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). Maka secara lojik, sebuah STACK dapat digambarkan sebagai list linier yang setiap elemennya adalah Type ElmtS = record <Info : InfoType, Next : address > Halaman 73

74 dengan InfoType terdefinisi yang menentukan informasi yang disimpan pada setiap elemen stack, dan address adalah alamat dari elemen Selain itu alamat elemen terbaru (TOP) dicatat, sedangkan alamat elemen yang paling bawah, yaitu yang paling lama biasanya diebut BOTTOM. TOP adalah elemen pertama list, supaya penambahan dan penghapusan dengan mudah dan efisien dapat dilakukan. Halaman 74

75 Sehingga jika S adalah sebuah Stack, dan P adalah address maka Top (S) adalah alamat elemen TOP, dimana operasi penyisipan/penghapusan dilakukan. Info (P) adalah informasi yang disimpan pada alamat P Next (P) adalah alamat suksesor P ElmtS (P) adalah sebuah elemen stack yang beralamat P Stack kosong adalah Stack dengan Top (S) = Nil ( tidak terdefinisi ) Halaman 75

76 Bagian Deklarasi dari algoritma pada Stack : Deklarasi type InfoType = {Sebuah type terdefinisi} type Address pointer to ElmtS type ElmtS = record <Info : InfoType, Next : Address > type Stack = record <TOP : Address> {Deklarasi Nama Peubah} S : Stack P : Address Halaman 76

77 5.2. Traversal pada Stack Pada stack, jarang sekali dilakukan traversal, karena keunikan Stack justru pada operasi yang hanya menyangkut elemen TOP. Namun dibutuhkan traversal misalnya untuk mencetak isi Stack Search pada Stack Pada stack, elemen yang diproses hanyalah elemen pada TOP. Maka hampir tidak pernah dilakukan search. Halaman 77

78 5.4. Operasi dan fungsi dasar pada STACK. a. Test STACK kosong Mengetahui bahwa stack kosong atau tidak sangat penting, sebab semua operasi akan dilakukan berdasarkan kosong atau tidaknya suatu Stack. Realisasi algoritma dari definisi fungsional ini adalah sebuah fungsi yang melakukan test terhadap Stack sebagai berikut : Halaman 78

79 function StackEmpty (S : STACK) Boolean { TEST stack kosong : Mengirim true, jika tumpukan kosong, false jika tumpukan tidak kosong} Deklarasi Deskripsi return (Top (S) = Nil) Halaman 79

80 b. Pembuatan STACK kosong Membuat Stack kosong diperlukan untuk memulai memakai stack. Realisasi algoritma dari definisi fungsional ini adalah sebuah prosedur yang melakukan inisialisasi stack sebagai berikut Procedure CreateEmptyS (Output S : STACK) {K. Awal : sembarang, K. Akhir : sebuah stack S yang kosong siap dipakai terdefinisi Proses : Membuat stack kosong } Deklarasi Deskripsi Top (S) Nil Halaman 80

81 c.penambahan sebuah elemen pada STACK (Push) Penambahan selalu dilakukan pada TOP, dan karena alamat TOP diketahui maka prosesnya sederhana. Berikut ini akan diberikan skema prosedur penyisipan tersebut. Realisasi algoritma dari definisi fungsional ini adalah salah satu dari dua buah prosedur yang melakukan penambahan elemen stack sebagai berikut. Prosedur pertama menambahkan suatu ElmtS yang diketahui alamatnya dan yang kedua menambahkan suatu nilai ElmtS yang diberikan. Halaman 81

82 procedure (Input/Output S : STACK Input P : address) {Menambahkan sebuah elemen baru pada TOP sebuah stack, dengan elemen yang diketahui alamatnya} {K.Awal : Stack mungkin kosong, P terdefinisi (berarti terdefinisi informasinya, Next (P) = Nil} {K.Akhir : Top (S) adalah P} Deklarasi Deskripsi { insert sebagai elemen pertama } Next (P) TOP (S) TOP (S) P Halaman 82

83 procedure Push( Input / Output S:STACK Input E: InfoType ) { Menambahkan sebuah elemen baru pada TOP sebuah stack, dengan elemen yang diketahui informasinya } { K. Awal : Stack mungkin kosong, E terdefenisi, alokasi alamat selalu berhasil } { K. Akhir : TOP (S) berisi E ) Deklarasi P : address Deskripsi Alokasi ( P ) { alokasi selau berhasil } Info(P) E { insert sebagai elemen pertama } Next(P) TOP(S) TOP(S) P Halaman 83

84 d. Penghapusan sebuah elemen pada STACK (Pop) Penghapusan elemen Stack selalu dilakukan pada TOP, hanya saja harus diperhitungkan bahwa mugkin Stack akan menjadi kosong akibat terjadinya penghapusan. Jika Stack menjadi kosong, maka harga TOP harus diganti. Realisasi algoritma dari definisi funsional ini adalah salah satu dari dua buah prosedur yang melakukan pengambilan elemen stack sebagai berikut. Prosedur pertama mengambil suatu Elmts dengan menyimpan alamatnya dan yang kedua mengambil nilai, dan membebaskan alamat ( dealokasi ) yang tadinya dipakai Halaman 84

85 procedure S : STACK Output P : address) {K.Awal : Stack tidak kosong K.Akhir : Alamat elemen Top (S) disimpan pada P, sehingga informasinya dapat diakses melalui P Proses : Menghapus elemen stack, stack tidak boleh kosong dan mungkin menjadi kosong } Deklarasi Deskripsi P TOP (S) TOP (S) Next(TOP(S)) Halaman 85

86 procedure PopStack(Input/Output S : STACK Output E : InfoType) {K.Awal : Stack tidak kosong K.Akhir : Alamat elemen Top (S) disimpan pada E, alamat TOP yang lama didealokasi Proses : Menghapus elemen stack, stack tidak boleh kosong dan mungkin menjadi kosong } Deklarasi P : address Deskripsi P TOP (S) E Info(P) TOP (S) Next(TOP(S)) Dealokasi (P) Halaman 86

87 Soal-Soal Latihan 1. Mengapa cara penyusunan elemen pada Stack sering disebut tersusun secara LIFO? 2. Mengapa pada Stack Traversal dan Search jarang dilakukan? 3. Penghapusan elemen pada Stack selalu dilakukan pada elemen yang paling atas, bagaimana jika terpaksa harus menghapus elemen yang paling bawah? Halaman 87

88 4. Buatlah sebuah fungsi untuk menghitung jumlah elemen stack yang genap, jika diketahui sebuah stack dengan elemen bertype integer. 5. Buatlah fungsi/prosedur untuk mencetak elemen stack yang ganjil 6. Buatlah juga fungsi untuk menghitung rata-rata elemen Stack yang genap 7. Buatlah sebuah fungsi untuk mengirimkan elemen pertama Stack 8. Buatlah sebuah fungsi untuk mengirimkan elemen Stack yang maksimum jika diketahui elemen Stack terurut mengecil bertype integer Halaman 88

89 6. Queue (Antrian( Antrian) 6.1. Definisi Queue (Antrian) adalah list linier yang : 1. Dikenali elemen pertama (Head) dan elemen terakhirnya (Tail) 2. Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai berikut : - Penyisipan selalu dilakukan setelah elemen terakhir - Penghapusan selalu dilakukan pada elemen pertama 3. Satu elemen dengan elemen lain dapat diakses melalui informasi Next Halaman 89

90 Struktur data ini banyak dipakai dalam informatika misalnya untuk merepresentasi : 1. Antrian job dalam sistem operasi 2. Antrian dalam dunia nyata Maka secara lojik, sebuah Queue dapat digambarkan sebagai list linier yang setiap elemennya adalah : Type ElmtQ = record <Info : InfoType, Next : address > Halaman 90

91 dengan InfoType 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 Address, penulisan untuk Queue adalah : Head(Q) Tail(Q) Next(P) Info(P) Halaman 91

92 Bagian Deklarasi dari algoritma pada Queue : Deklarasi type InfoType = {Sebuah type terdefinisi} type Address pointer to ElmtQ type ElmtQ = record <Info : InfoType, Next : Address > type Queue = record <Head : Address, Tail : Address> {Deklarasi Nama Peubah} Q : Queue P : Address Halaman 92

93 6.2. Traversal pada Queue Pada queue, jarang sekali dilakukan traversal, karena keunikan Queue justru pada operasi yang hanya menyangkut elemen pertama dan terakhir. Namun dibutuhkan traversal misalnya untuk mencetak isi Antrian Search pada Queue Pada Queue, elemen yang diproses hanyalah elemen pada pertama dan terakhir. Maka hampir tidak pernah dilakukan search. Halaman 93

94 6.4. Operasi dan fungsi dasar pada Queue. a. Test Queue kosong Mengetahui bahwa Queue kosong atau tidak sangat penting, sebab semua operasi akan dilakukan berdasarkan kosong atau tidaknya suatu Queue. Realisasi algoritma dari definisi fungsional ini adalah sebuah fungsi yang melakukan test terhadap Queue sebagai berikut : Halaman 94

95 function IsQEmpty (Q : Queue) Boolean { TEST Queue kosong : Mengirim true, jika antrian kosong, false jika antrian tidak kosong} Deklarasi Deskripsi return ((Head(Q) = Nil) and (Tail(Q) = Nil)) Halaman 95

96 b. Pembuatan Queue kosong Membuat Queue kosong diperlukan untuk memulai memakai Queue. Realisasi algoritma dari definisi fungsional ini adalah sebuah prosedur yang melakukan inisialisasi Queue sebagai berikut : Procedure CreateEmptyQ (Output Q : Queue) {K. Awal : sembarang, K. Akhir : sebuah queue Q yang kosong terbentuk Proses : Membuat queue kosong } Deklarasi Deskripsi Head(Q) Nil Tail(Q) Nil Halaman 96

97 c.penambahan sebuah elemen pada Queue Penambahan selalu dilakukan pada ekor, dan karena alamat ekor diketahui maka prosesnya sederhana, yaitu hanya InsertLast. Berikut ini akan diberikan skema prosedur penyisipan tersebut. Halaman 97

98 Realisasi algoritma dari definisi fungsional ini adalah salah satu dari dua buah prosedur yang melakukan penambahan elemen Queue sebagai berikut : Prosedur pertama menambahkan suatu Elemen Queue yang diketahui alamatnya dan yang kedua menambahkan suatu nilai Elemen queue yang diberikan. Halaman 98

99 procedure (Input/Output Q : Queue Input P : address) {K.Awal : Queue mungkin kosong, P terdefinisi (berarti terdefinisi informasinya, Next (P) = Nil K.Akhir : P menjadi elemen Tail dari Q dan Tail yang baru adalah P Proses : Insert sebuah elemen beralamat P pada Tail dari antrian Q } Deklarasi Halaman 99

100 Deskripsi If IsQEmpty(Q) then Head(Q) P Tail(Q) P else Next(Tail(Q)) P Tail(Q) P endif Halaman 100

101 procedure InsertQ(Input/Output Q : Queue Input E : InfoType) {K.Awal : Queue mungkin kosong, E terdefinisi K.Akhir : Elemen Tail dari Q yang baru bernilai E Proses : Insert sebuah elemen nilai pada Tail dari antrian Q } Deklarasi Halaman 101

102 Deskripsi Alokasi (P) Info (P) E If IsQEmpty(Q) then Head(Q) P Tail(Q) P else Next(Tail(Q)) P Tail(Q) P endif Halaman 102

103 d. Penghapusan Elemen Pada QueuE Penghapusan elemen pada queue selalu dilakukan pada elemen pertama, hanya saja perlu diperhitungkan bahwa mungkin queue menjadi kosong akibat terjadinya penghapusan. Jika queue menjadi kosong, maka harga Tail harus diganti. Jika akibat penghapusan queue tidak kosong, maka elemen terakhir tidak berubah. Halaman 103

104 Berikut adalah skema penghapusan tersebut. Prosedur pertama melakukan penghapusan ElmtQ yang berada di Head danyang dicatat adalah alamatnya, yaitu P. Prosedur yang kedua menghapus elemen Head dari queue dan menyimpannya pada suatu elmtq serta membebaskan alamat yang tadinya dipakai oleh elemen Head tersebut. Halaman 104

105 procedure Q : Queue Output P : address) {K.Awal : Queue tidak kosong K.Akhir : P bukan lagi elemen dari Q, P Nil, Next(P) = Nil Proses : Menghapus elemen Head dari antrian, antrian tidak boleh kosong dan mungkin menjadi kosong } Deklarasi Deskripsi Halaman 105

106 P Head(Q) Head(Q) Next(Head(Q)) if (Head(Q) = Nil) then Tail(Q) Nil endif Next(P) Nil Halaman 106

107 procedure DeleteQ(Input/Output Q : Queue Output E : InfoType) {K.Awal : Queue tidak kosong K.Akhir : Jika P adalah Head(Q). P bukan lagi elemen dari Q, P Nil, Next(P) = Nil Proses Deklarasi Deskripsi : Menghapus elemen Head dari antrian, antrian tidak boleh kosong dan mungkin menjadi kosong } Halaman 107

108 P Head(Q) E Info(Head(Q)) Head(Q) Next(Head(Q)) if (Head(Q) = Nil) then Tail(Q) Nil endif Next(P) Nil Dealokasi(P) Halaman 108

109 Soal-Soal 1. Mengapa cara penyusunan elemen pada Queue Sering disebut tersusun secara FIFO? 2. Mengapa pada Queue Traversal dan Search jarang dilakukan? 3. Penghapusan elemen pada Queue selalu dilakukan pada elemen yang paling depan, bagaimana jika terpaksa harus menghapus elemen yang paling belakang? Halaman 109

110 4. Buatlah sebuah fungsi untuk menghitung jumlah elemen queue yang ganjil, jika diketahui sebuah queue dengan elemen bertype integer. 5. Buatlah fungsi/prosedur untuk mencetak elemen queue yang genep 6. Buatlah juga fungsi untuk menghitung rata-rata elemen queue yang ganjil 7. Buatlah sebuah fungsi untuk mengirimkan elemen pertama queue 8. Buatlah sebuah fungsi untuk mengirimkan elemen queue yang maksimum jika diketahui elemen queue terurut membesar dan bertype integer Halaman 110

111 7. Pohon (Tree) 7.1. Definisi Rekurens Dari Pohon Sebuah pohon adalah himpunan terbatas tidak kosong, dengan elemen yang dibedakan sebagai berikut : 1. Sebuah elemen yang dibedakan dari yang lain yang disebut sebagai AKAR (root) dari pohon 2. Elemen yang lain (jika masih ada) dibagibagi menjadi beberapa sub himpunan yang disjoint dan masing-masing sub himpunan tersebut adalah pohon yang disebut sebagai sub pohon dari pohon tersebut. Halaman 111

112 Beberapa Istilah 1. Hutan Hutan adalah sequence (list) dari pohon 2. Simpul (Node) Simpul adalah elemen dari pohon yang memungkinkan akses pada sub pohon dimana simpul tersebut berfungsi sebagai Akar 3. Cabang Cabang adalah hubungan antara Akar dengan sub pohon Halaman 112

113 4. Ayah Akar dari sebuah pohon adalah Ayah dari sub pohon 5. Anak Anak dari sebuah pohon adalah Sub pohon 6. Saudara Saudara adalah simpul-simpul yang mempunyai Ayah yang sama 7. Daun Daun adalah simpul terminal dari pohon. Semua simpul selain Daun adalah simpul bukan terminal Halaman 113

114 8. Jalan (Path) Jalan adalah suatu urutan tertentu dari Cabang 9. Derajat Derajat sebuah pohon adalah banyaknya anak dari dari pohon tersebut. Jika sebuah simpul berderajat N disebut pohon N-aire 1 disebut pohon 1-aire/uner 2 disebut pohon 2-aire/biner Halaman 114

115 10. Tingkat (Level) Level pohon adalah panjangnya jalan dari Akar sampai dengan simpul yang bersangkutan. Panjang dari jalan adalah banyaknya simpul yang dikandung pada jalan tersebut. Akar mempunyai tingkat sama dengan 1. Dua buah simpul disebut sebagai Sepupu jika mempunyai tingkat yang sama dalam sebuah pohon. Halaman 115

116 11. Kedalaman (Tinggi) Kedalaman (Tinggi) dari pohon adalah nilai maksimum dari tingkat simpul yang ada pada pohon tersebut. Kedalaman adalah panjang maksimum jalan dari Akar menuju ke sebuah daun 12. Lebar Lebar sebuah Pohon adalah maksimum banyaknya simpul yang ada pada suatu Tingkat (Level) Halaman 116

117 7.2. Struktur Pohon Biner Definisi Sebuah pohon biner (Binary Tree) adalah himpunan terbatas yang : Mungkin kosong atau Terdiri dari sebuah simpul yang disebut sebagai Akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai Sub Pohon Kiri (Left) dan Sub Pohon Kanan (Right) dari pohon biner tersebut. Halaman 117

118 Pohon biner merupakan tipe yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak. Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum. Halaman 118

119 Notasi Prefiks, Infiks dan Postfiks 1. Notasi Prefiks Notasi Prefiks ditulis dengan cara mengikuti alur sebagai berikut : Halaman 119

120 2. Notasi Infiks Notasi ini ditulis dengan cara mengikuti alur sebagai berikut : Halaman 120

121 3. Notasi Posfiks Notasi ini ditulis dengan cara mengikuti alur sebagai berikut : Halaman 121

122 Rekonstruksi Algoritma {Deklarasi Type} Type Infotype = {terdefinisi} Type node = record <Info : infotype, Left : address, Right: address > Type BinTree : address {Primitif} Halaman 122

123 function Akar (P : BinTree) infotype {Mengirimkan nilai Akar pohon biner P} function Left (P : BinTree) infotype {Mengirimkan anak kiri pohon biner P} function Right (P : BinTree) infotype {Mengirimkan anak kanan pohon biner P} Halaman 123

124 function IsEmpty(P : BinTree) boolean { Test apakah sebuah pohon kosong, mengirimkan True jika kosong dan False jika tidak} procedure MakeTree(input Akar : infotype, L : BinTree, R : BinTree, output P : BinTree) { K. Awal : sembarang K. Akhir: Terbentuk sebuah pohon biner Proses : Menghasilkan sebuah pohon biner dari Akar, L dan R} Halaman 124

125 {Traversal} Procedur PreOrder(input P : BinTree) {K. AWAL : P terdefinisi K. AKHIR : Semua simpul P sudah diproses secara preorder} Procedure InOrder(input P : BinTree) {K. AWAL : P terdefinisi K. AKHIR : Semua simpul P sudah diproses secara inorder} Halaman 125

126 Procedure PostOrder(input P : BinTree) {K. AWAL : P terdefinisi K. AKHIR : Semua simpul P sudah diproses secara postorder} Procedure PrintTree(input P : BinTree, h : integer) {K. AWAL : P terdefinisi, h adalah jarak indentasi K. AKHIR : Semua simpul P sudah ditulis dengan indentasi} Halaman 126

127 {Search} function Search(P : BinTree, X : infotype) boolean {Mengirimkan True jika ada node P bernilai X, false jika tidak} {fungsi lain} function NbElmt(P : BinTree) integer {Mengirimkan banyaknya elemen (node) pohon biner P} Halaman 127

128 function NbDaun(P : BinTree) integer { Mengirimkan banyaknya daun pohon biner P} function IsUnerLeft(P : BinTree) boolean { Mengirimkan True jika pohon biner tidak kosong P adalah pohon unerleft yaitu hanya mempunyai sub pohon kiri} function IsUnerRight(P : BinTree) boolean { Mengirimkan True jika pohon biner tidak kosong P adalah pohon unerright yaitu hanya mempunyai sub pohon kanan} Halaman 128

129 function IsBin(P : BinTree) boolean { Mengirimkan True jika pohon biner tidak kosong P adalah pohon biner yaitu mempunyai sub pohon kanan dan sub pohon kiri} function IsSkewLeft(P : BinTree) boolean { Mengirimkan True jika pohon biner P adalah pohon condong kiri} function IsSkewRight(P : BinTree) boolean { Mengirimkan True jika pohon biner P adalah pohon condong kanan} Halaman 129

130 function Tinggi(P : BinTree) integer { Mengirimkan tinggi dari pohon biner P} function Level(P : BinTree, X : infotype) integer { Mengirimkan level dari node X yang merupakan salah satu simpul dari pohon biner P} {Operasi Lain} Halaman 130

131 Procedure AddDaunTerkiri(input/output P:BinTree, input X: infotype) {K. AWAL : P boleh kosong K. AKHIR : P bertambah simpulnya, dengan X adalah simpul daun terkiri} Procedure AddDaun(input/output P:BinTree, input X, Y : infotype, input Kiri : boolean) {K. AWAL : P tidak boleh kosong, X adalah salah satu daun pohon Biner P K. AKHIR : P bertambah simpulnya, dengan Y adalah anak kiri X (jika kiri) atau sebagai anak kanan X (jika not kiri)} Halaman 131

132 Procedure DelDaunTerkiri(input/output P:BinTree, output X: infotype) {K. AWAL : P tidak kosong K. AKHIR: P dihapus daun terkirinya dan didealokasi, dengan X adalah info yang semula disimpan pada daun terkiri yang dihapus} Procedure DelDaun(input/output P:BinTree, output X: infotype) {K. AWAL : P tidak kosong, X adalah salah satu daun K. AKHIR : X dihapus dari P} Halaman 132

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1 Array (Tabel) Tim Pengajar KU1071 Sem. 1 2009-2010 2009/11/3 TW/KU1071 1 Tujuan Perkuliahan Mahasiswa memahami makna dan kegunaan array (tabel) Mahasiswa dapat menggunakan notasi pendefinisian dan pengacuan

Lebih terperinci

1 Pencarian. 1.1 Tinjauan Singkat Larik

1 Pencarian. 1.1 Tinjauan Singkat Larik 1 Pencarian P encarian (searching) merupakan proses yang fundamental dalam pengolahan data. Proses pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe

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

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

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

Pertemuan Ke-3 (Tipe Data dan Nama) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

Pertemuan Ke-3 (Tipe Data dan Nama) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo Algoritma Pemrograman Pertemuan Ke-3 (Tipe Data dan Nama) Rahmady Liyantanto Sub Pokok Bahasan Pendahuluan Tipe Dasar Tipe Bentukan Nama Pendahuluan Tipe adalah pola representasi data dalam komputer. Tipe

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

TYPE. Inggriani Liem : Catatan Kuliah Algoritma & Pemrograman, Jurusan teknik Informatika - ITB TYPE.doc/TYPE- 21/08/03 16:04

TYPE. Inggriani Liem : Catatan Kuliah Algoritma & Pemrograman, Jurusan teknik Informatika - ITB TYPE.doc/TYPE- 21/08/03 16:04 TYPE Type adalah pola representasi suatu data dalam komputer. Gunanya untuk mendefinisikan objek yang akan diprogram. Ada type dasar (yang diasumsikan ada) dan type bentukan, biasanya type bentukan dibentuk

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

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut Mohammad Rizky Adrian 1) 1) Jurusan Teknik Informatika ITB, Bandung 40132, email: if17108@students.if.itb.ac.id Abstract Makalah ini

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

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

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs. Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks By. Rita Wiryasaputra, ST., M. Cs. ritasaputra@gmail.com Kriteria Unjuk Kerja Algoritma Pemrograman 1 Tugas Terakhir (15): Buatlah portofolio Pengidentifikasian

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

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

DASAR PEMROGRAMAN. Institut Teknologi Sumatera DASAR PEMROGRAMAN REVIEW STRUKTUR DASAR, PERCABANGAN, DAN PERULANGAN Institut Teknologi Sumatera TUJUAN KULIAH Mengenalkan konsep dasar pemrograman: dekomposisi problem, modularisasi, rekurens; skill/praktek

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

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

STRUKTUR DATA. Deskripsi Mata Kuliah

STRUKTUR DATA. Deskripsi Mata Kuliah STRUKTUR DATA Deskripsi Mata Kuliah Mata kuliah ini memberi pelajaran tentang paradigma pemrograman, array, string, matriks, record. Mata kuliah ini juga memberi pemahaman tentang list linear, multi link

Lebih terperinci

MODUL IV PENCARIAN DAN PENGURUTAN

MODUL IV PENCARIAN DAN PENGURUTAN MODUL IV PENCARIAN DAN PENGURUTAN 4.1 Tujuan Tujuan modul IV ini, adalah: Praktikan bisa membuat beberapa program pencarian berdasarkan metode algoritma pencarian Praktikan bisa membuat beberapa program

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-3 Tipe Data dan Nama :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Tipe Dasar Tipe Bentukan Nama S1 Teknik Informatika-Unijoyo 2 Pendahuluan

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-3 (Tipe Data dan Nama) :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Tipe Dasar Tipe Bentukan Nama S1 Teknik Informatika-Unijoyo 2 1

Lebih terperinci

Nama, Tipe, Ekspresi, dan Nilai

Nama, Tipe, Ekspresi, dan Nilai Nama, Tipe, Ekspresi, dan Nilai ALGORITMA DAN PEMROGRAMAN [IS6110102] Dosen: Yudha Saintika, S.T., M.T.I Sub-Capaian Pembelajaran MK Mahasiswa mampu menerapkan konsep nama, tipe, ekspresi, nilai ke dalam

Lebih terperinci

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

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

Lebih terperinci

BAB 1 KONSEP DASAR. Algoritma adalah urutan langkah-langkah logis untuk menyelesaikan sebuah masalah yang disusun secara sistematis.

BAB 1 KONSEP DASAR. Algoritma adalah urutan langkah-langkah logis untuk menyelesaikan sebuah masalah yang disusun secara sistematis. BAB 1 KONSEP DASAR 1.1 Algoritma Algoritma + struktur data = program Algoritma adalah urutan langkah-langkah logis untuk menyelesaikan sebuah masalah yang disusun secara sistematis. Notasi untuk menuliskan

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

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test Hanif Eridaputra / 00 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha

Lebih terperinci

6. TREE / BINARY TREE

6. TREE / BINARY TREE 6. TREE / BINARY TREE TUJUAN PRAKTIKUM 1. Praktikan mengenal Struktur data Tree. 2. Praktikan mengenal jenis-jenis tree, seperti binary tree. 3. Praktikan mengenal istilah-istilah yang terdapat didalam

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

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang Pencarian pada Array Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang Latar Belakang Merupakan proses yang penting karena sering dilakukan terhadap sekumpulan data yang disimpan

Lebih terperinci

Struktur Data. Pertemuan 2

Struktur Data. Pertemuan 2 Pertemuan 2 Tujuan Pembelajaran Mahasiswa mampu menjelaskan konsep struktur data (Pengertian Struktur data, Konsep struktur data, Tipe data sederhana, Deklarasi data dalam bahasa pemrograman. 1. Pengertian

Lebih terperinci

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem PENGULANGAN Bagian 1 : Notasi Tim Pengajar KU1071 Sem. 1 2009-2010 1 Tujuan Mahasiswa memahami jenis-jenis pengulangan dan penggunaannya serta memahami elemenelemen dalam pengulangan. Mahasiswa dapat menggunakan

Lebih terperinci

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Tree (Struktur Data) Nisa ul Hafidhoh, MT Tree (Struktur Data) Nisa ul Hafidhoh, MT Struktur Data Linier 1 5 8 9 2 ARRAY 0 1 2 3 n Head Tail QUEUE O U T 1 2 3 4 STACK 4 3 2 1 I N 10 8 14 LINKED LIST Struktur Tree Struktur Tree adalah struktur

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-10 (Larik) :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Pendeklarasian Larik Mengisi Elemen Larik dari Piranti Masukan Menulis Elemen

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

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING) PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING) a. Introduction b. Tanpa Boolean c. Dengan Boolean d. Penggunaan dalam Fungsi INTRODUCTION Merupakan algoritma pencarian yang paling sederhana. Proses Membandingkan

Lebih terperinci

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN PERCABANGAN DAN PENGULANGAN Pada BAB ini akan membahas tentang PERCABANGAN dan PERULANGAN. PERCABANGAN : a) IF THEN b) CASE OF PENGULANGAN: a) REPEAT N TIMES b) REPEAT UNTIL c) WHILE DO d) ITERATE STOP

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 Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-11 (Larik) :: NoorIfada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Pendeklarasian Larik Mengisi Elemen Larik dari Piranti Masukan Menulis 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

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

Algoritma dan Struktur Data

Algoritma dan Struktur Data Algoritma dan Struktur Data Program Program: sederetan perintah-perintah yang harus dikerjakan oleh komputer untuk menyelesaikan masalah. 3 level bahasa pemrograman: 1. Bahasa tingkat rendah 2. Bahasa

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

Tipe Rekursif: POHON (TREE)

Tipe Rekursif: POHON (TREE) Tipe Rekursif: POHON (TREE) Tim Pengajar IF2030 2009/9/8 IF2030/Sem. 1 2009-2010 1 Tujuan Mahasiswa memahami definisi pohon dan pohon biner Berdasarkan pemahaman tersebut, mampu membuat fungsi sederhana

Lebih terperinci

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan) ALGORITMA PENCARIAN MINGGU KE: 9 TUJUAN: Mahasiswa dapat memahami masalah pencarian. Mahasiswa dapat memahami algoritma pencarian beruntun. Mahasiswa dapat memahami algoritma pencarian beruntun Versi 1

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

: 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

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-3 (Tipe Data dan Nama) Noor Ifada noor.ifada@if.trunojoyo.ac.id S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Tipe Dasar Tipe Bentukan Nama S1 Teknik

Lebih terperinci

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP Ahmad Ayyub Mustofa Jurusan Teknik Informatika ITB, Bandung 40132, email: rekka_zan@students.itb.ac.id Abstraksi Bahasa pemrograman

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

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-2 (Teks Algoritma) :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Judul Algoritma Deklarasi Deskripsi Translasi Teks Algoritma ke dalam

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-2 (Teks Algoritma) Noor Ifada noor.ifada@if.trunojoyo.ac.id S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Judul Algoritma Deklarasi Deskripsi Translasi

Lebih terperinci

Buku Ajar Struktur Data

Buku Ajar Struktur Data B a g i a n 5 Tujuan Instruksional Khusus Pokok Bahasan Mahasiswa mampu menjelaskan struktur data nonlinier Tree. Mahasiswa mampu memahami operasi pada struktur data Tree Struktur data Tree secara umum.

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

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 PENCARIAN SIMPUL SOLUSI DALAM GRAF

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF Anthony Rahmat Sunaryo NIM: 3506009 Jurusan Teknik Informatika ITB, Bandung email : if6009@students.if.itb.ac.id Abstract -- Makalah ini membahas tentang analsis

Lebih terperinci

Algoritma dan Pemrograman 1. By. Rita Wiryasaputra, ST., M. Cs.

Algoritma dan Pemrograman 1. By. Rita Wiryasaputra, ST., M. Cs. Algoritma dan Pemrograman 1 By. Rita Wiryasaputra, ST., M. Cs. Tugas : 1. Ditulis tangan dalam buku catatan yang disampul kertas manggis, kumpul 13 Oktober 2016 jam 09.40 (pagi )UIGM 2. Tentukan KPK dari

Lebih terperinci

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL Tim Pengajar KU1071 Sem. 1 2009-2010 1 Overview Notasi Pengulangan 1. Berdasarkan jumlah pengulangan repeat n times aksi 2. Berdasarkan kondisi berhenti repeat aksi

Lebih terperinci

Array. Teknik Informatika Politeknik Negeri Batam

Array. Teknik Informatika Politeknik Negeri Batam Array Teknik Informatika Politeknik Negeri Batam Pendahuluan Array Array A 1 158 2 157 3 162 4 169 5 172 6 155 7 170 8 163 Isi A[1] adalah 158 Isi A[2] adalah 157 Isi A[8] adalah 163 Struktur data statik

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 3 Referensi: 1. Inggriani Liem. 2003. Catatan Kuliah & Pemrograman, Jurusan Teknik Informatika ITB 2. Rinaldi Munir. 2003. dan Pemrograman II. Bandung : Penerbit Informatika I. Tabel/Larik/Array

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

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

CCH1A4 / Dasar Algoritma & Pemrogramanan CCH1A4 / Dasar Algoritma & Pemrogramanan Yuliant Sibaroni M.T, Abdurahman Baizal M.Kom KK Modeling and Computational Experiment Pencarian dalam Tabel Pendahuluan Pencarian Sekuensial Pencarian Sekuensial

Lebih terperinci

4 LINKED LIST. 4.1 Istilah-istilah 1. Simpul Simpul terdiri dari dua bagian, yaitu : Bagian data Bagian pointer yang menunjuk ke simpul berikutnya.

4 LINKED LIST. 4.1 Istilah-istilah 1. Simpul Simpul terdiri dari dua bagian, yaitu : Bagian data Bagian pointer yang menunjuk ke simpul berikutnya. 4 LINK LIST Linked list adalah struktur berupa rangkaian elemen saling berkaitan dimana tiap elemen dihubung elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu

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

BAB XI Manipulasi Binary Tree

BAB XI Manipulasi Binary Tree www.hansmichael.com - Bab XI. Manipulasi Binary Tree BAB XI Manipulasi Binary Tree 11.1 Insert Node 11.2 Search Node 11.3 Delete Node 11.4 Copy Tree 11.5 Latihan Soal Binary tree seringkali diterapkan

Lebih terperinci

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS R. Raka Angling Dipura NIM : 13505056 Sekolah Teknik Elektro dan Informatika, Institut Teknologi Bandung Jalan Ganesha 10, Bandung

Lebih terperinci

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2 VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI Tujuan Pembelajaran 1. Siswa mampu memahami penulisan Tipe data, variabel dan konstanta dalam pascal 2. Siswa mampu menerapkan penggunaan Tipe data,

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

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

Kode MK/ Pemrograman Terstruktur 2

Kode MK/ Pemrograman Terstruktur 2 Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Graf 1 8/25/2015 Pendahuluan Dalam bab ini kita akan membahas struktur data graf Struktur data graf banyak digunakan sebagai

Lebih terperinci

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT PROGRAM STUDI S SISTEM KOMPUTER UNIVERSITAS DIPONEGORO Oky Dwi Nurhayati, ST, MT email: okydn@undip.ac.id Sorting = pengurutan Sorted = terurut menurut kaidah/aturan tertentu Data pada umumnya disajikan

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

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari ALGORITMA DAN PEMROGRAMAN 2 3 SKS By : Sri Rezeki Candra Nursari MATERI Teks/string Pointer File Struktur Kelas/Class Konstruktor dan Destruktor Kelas dan Obyek Overloading Operator Inheritance (Pewarisan)

Lebih terperinci