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

dokumen-dokumen yang mirip
DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

BAB 1 PENGANTAR KE STRUKTUR DATA

Modul Ke-1 Pertemuan ke-1 Deskripsi: Pemrosesan Sekuensial Larik Nama File: P01-XXX (XXX adalah 3 digit terakhir NPM)

Struktur Data. Queue (Antrian)

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

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

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

BAB IX LINKED LIST (SENARAI BERANTAI)

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

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

BAB II STACK Atau TUMPUKAN

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

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

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

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

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

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Algoritma Traversal di dalam Graf

FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi.

Bagian I. Studi Kasus [82] Tanda tangan:

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

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

MODUL IV PENCARIAN DAN PENGURUTAN

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

IKG2A3/ Pemrograman Terstruktur 2

QUEUE (ANTRIAN) Struktur Data - Queue

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

BAB XI Manipulasi Binary Tree

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

LATIHAN UTS Tim Pengajar KU1071 Sem

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

LOGO STRUKTUR DATA QUEUE

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

BAB III QUEUE (ANTRIAN)

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

A. Bagian I. Studi Kasus

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

6. TREE / BINARY TREE

Representasi Logic List Linier

BAB IX LINKED LIST (SENARAI BERANTAI)

Algoritma dan Struktur Data

Lab. Teknik Informatika Struktur Data 1

Silabus Struktur Data. Bandung 2013

KERUGIAN DAN KEUNTUNGAN LINKED LIST

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

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

Gambar 3.1. Circular Single Linked List. Deklarasi bisa dilihat kembali di Single Linked List atau Double Linked List.

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

Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Greedy Spiders

Algoritma Pemrograman

LAPORAN AKHIR PRAKTIKUM STRUKTUR DATA

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

ALGORITMA & PEMROGRAMAN

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

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

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

Pertemuan VI ANTRIAN (Queue)

4. STACK / TUMPUKAN TEORI PENUNJANG

LOOPING. Brigida Arie Minartiningtyas, M.Kom

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

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

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

LIST LINIER 1. DEFINISI

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

Array. Teknik Informatika Politeknik Negeri Batam

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

2 SENARAI/LIST BERANTAI GANDA

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

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

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

algoritma & pemrograman

Linked List. Bandung 2013

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

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

Algoritma Pemrograman

Tree (Struktur Data) Nisa ul Hafidhoh, MT

BAB VI SEARCHING (PENCARIAN)

1 Pencarian. 1.1 Tinjauan Singkat Larik

Algoritma Pemrograman

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

*Algoritma dan Pemrograman 2 UTS *

MODUL 6 SINGLE & DOUBLE LINKED LIST

{ Program Pointer Pertama } { Program Pointer Single Linklist }

Struktur Data. Pertemuan 2

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

DEFINISI. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon 2

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

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

Algoritma Pemrograman

Kode MK/ Pemrograman Terstruktur 2

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

A. Bagian I. Studi Kasus [82]

Transkripsi:

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 type Elemen = record <Info: TInfo, Next: Address> type Senarai = record <First: Address> procedure Alokasi(output P: Address) {memesan satu unit penyimpan untuk dijadikan elemen senarai} {K.Akhir: P terdefinisi, siap digunakan sebagai elemen list} procedure Create(output L: Senarai) {membuat senarai kosong} {K.Akhir: tercipta sebuah list kosong, L.First = Nil} procedure InsertFirst(input/output L: Senarai, input P: Address) {Menyisipkan P sebagai elemen pertama senarai} {K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen pertama senarai} procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak} procedure HitGanjil(input L: Senarai, output NGj: integer) {Menghitung banyak elemen senarai yang info-nya ganjil} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: NGj terdefinisi, yaitu banyak elemen senarai yang bernilai ganjil. Jika senarai kosong, maka NGj = -99 } Halaman - 1

P: Address L: Senarai k, N, NGj: integer X: TInfo Create(L) write ( Banyak elemen senarai? ); read (N) for k 1 to N do write ( masukkan info ); read (X) Alokasi(P) Info(P) X Next(P) Nil InsertFirst(L, P) endfor Cetak(L) HitGanjil(L, NGj) write( banyak info ganjil =, NGj) Halaman - 2

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-2, Pertemuan ke-2 Nama file : P02-XXX Senarai, Penyisipan Deklarasi global: type TInfo = integer type Address = pointer to Elemen type Elemen = record <Info: TInfo, Next: Address> type Senarai = record <First: Address> procedure Alokasi(output P: Address) {memesan satu unit penyimpan untuk dijadikan elemen senarai} {K.Akhir: P terdefinisi, siap digunakan sebagai elemen list} procedure Create(output L: Senarai) {membuat senarai kosong} {K.Akhir: tercipta sebuah list kosong, L.First = Nil} procedure InsertFirst(input/output L: Senarai, input P: Address) {Menyisipkan P sebagai elemen pertama senarai} {K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen pertama senarai} procedure InsertAfter(input/output P, Prev: Address) {Menyisipkan P setelah elemen dengan alamat Prev} {K. Awal: Prev terdefinisi, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen setelah elemen dengan alamat Prev} procedure SisipK(input/output L: Senarai, input P: Address, input k: integer) {menyisipkan P sebagai elemen ke-k} {K. Awal: L terdefinisi, P terdefinisi, k terdefinisi, > 0} {K.Akhir: P menjadi elemen ke-k} procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai} {K. Awal: L terdefinisi, mungkin kosong} Halaman - 3

{K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak} procedure HitElemen(input L: Senarai, output NEl: integer) {Menghitung banyak elemen senarai} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: NEl terdefinisi, yaitu banyak elemen senarai } P: Address L: Senarai Pil, k: integer X: TInfo Create(L) repeat write( Pemrosesan Senarai ) write( 1. Penyisipan ) write( 2. Cetak ) write( 3. Hitung Elemen ) write( 4. Selesai ) write( Masukkan pilihan[1/2/3/4] ); read(pil) if (Pil=1) then write ( Info yang akan disisipkan adalah: ); read(x) Alokasi(P); Next(P) Nil; Info(P) X wriite ( Sisipkan sebagai elemen ke-? ); read(k) SisipK(L,P,k) else if (Pil=2) then Cetak(L) else if (Pil=3) then HitungElemen(L,NEl); write( Banyak elemen senarai =,NEl) else if (Pil=4) then write( Program Selesai ) else write( Salah pilih ) until (Pil=4) Halaman - 4

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-3, Pertemuan ke-3 dan ke-4 Nama file : P03-XXX (XXX adalah 3 digit terakhir NIM) Senarai, Hapus elemen Deklarasi global: type TInfo = integer type Address = pointer to Elemen type Elemen = record <Info: TInfo, Next: Address> type Senarai = record <First: Address> procedure Alokasi(output P: Address) {memesan satu unit penyimpan untuk dijadikan elemen senarai} {K.Akhir: P terdefinisi, siap digunakan sebagai elemen list} procedure DeAlokasi(input P: Address) {K. Awal: P terdefinisi} {K.Akhir: P dikembalikan ke sistem} procedure Create(output L: Senarai) {membuat senarai kosong} {K.Akhir: tercipta sebuah list kosong, L.First = Nil} procedure InsertFirst(input/output L: Senarai, input P: Address) {Menyisipkan P sebagai elemen pertama senarai} {K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen pertama senarai} procedure InsertAfter(input/output P, Prev: Address) {Menyisipkan P setelah elemen dengan alamat Prev} {K. Awal: Prev terdefinisi, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen setelah elemen dengan alamat Prev} procedure DeleteFirst(input/output L: Senarai, output P:Address) {menghapus elemen pertama senarai} {K. Awal: L terdefinisi, tidak kosong} {K.Akhir: P adalah alamat elemen yang dihapus} Halaman - 5

procedure DeleteAfter(input/output P, Prev: Address) {menghapus elemen setelah elemen dengan alamat Prev} {K. Awal: Prev terdefinisi} {K.Akhir: P adalah alamat elemen yang dihapus} procedure HapusX(input/output L: Senarai, input X: TInfo, output P: Address) {mencari keberadaan X, jika ditemukan maka hapus elemen X} {K. Awal: L terdefinisi, X terdefinisi} {K.Akhir: Jika X ditemukan P adalah alamat elemen yang dihapus. Jika X ditemukan, maka P = Nil} procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak} procedure HitElemen(input L: Senarai, output NEl: integer) {Menghitung banyak elemen senarai} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: NEl terdefinisi, yaitu banyak elemen senarai } function Selesai(input Pil:integer) boolean {mengembalikan true jika Pil = 5} P: Address L: Senarai Pil,k : integer X: TInfo Create(L) repeat write( Pemrosesan Senarai ) write( 1. Penyisipan ) write( 2. Hapus Elemen ) write( 3. Cetak ) write( 4. Hitung Elemen ) write( 5. Selesai ) write( Masukkan pilihan[1/2/3/4] ); read(pil) Halaman - 6

case (pil) 1: write ( Info yang akan disisipkan adalah: ); read(x) Alokasi(P); Next(P) = Nil; Info(P) X write ( Sisipkan sebagai elemen ke-? ); read (k) SisipK(L, P, k) 2: write( Elemen yang akan dihapus? ); read (X) HapusX(L, X, P) if (P = Nil) then write(x, tidak ditemukan ); else DeAlokasi(P) 3: Cetak 4: HitungElemen(L,NEl); write( Banyak elemen senarai =,NEl) 5: write( Program Selesai ) endcase until (Selesai(Pil)) Halaman - 7

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-4, Pertemuan ke-5 dan ke-6 Nama file : P04-XXX (XXX adalah 3 digit terakhir NIM) Senarai yang Info-nya Terstruktur Deklarasi global: type DataMhs = record <Nama: string[25], NIM: string[12], IPK: real> type TInfo = DataMhs type Address = pointer to Elemen type Elemen = record <Info: TInfo, Next: Address> type Senarai = record <First: Address> procedure Alokasi(output P: Address) {memesan satu unit penyimpan untuk dijadikan elemen senarai} {K.Akhir: P terdefinisi, siap digunakan sebagai elemen list} procedure DeAlokasi(input P: Address) {K. Awal: P terdefinisi} {K.Akhir: P dikembalikan ke sistem} procedure Create(output L: Senarai) {membuat senarai kosong} {K.Akhir: tercipta sebuah list kosong, L.First = Nil} procedure InsertFirst(input/output L: Senarai, input P: Address) {Menyisipkan P sebagai elemen pertama senarai} {K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen pertama senarai} procedure InsertAfter(input/output P, Prev: Address) {Menyisipkan P setelah elemen dengan alamat Prev} {K. Awal: Prev terdefinisi, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen setelah elemen dengan alamat Prev} procedure DeleteFirst(input/output L: Senarai, output P:Address) {menghapus elemen pertama senarai} Halaman - 8

{K. Awal: L terdefinisi, tidak kosong} {K.Akhir: P adalah alamat elemen yang dihapus} procedure DeleteAfter(input/output P, Prev: Address) {menghapus elemen setelah elemen dengan alamat Prev} {K. Awal: Prev terdefinisi} {K.Akhir: P adalah alamat elemen yang dihapus} procedure HapusX(input/output L: Senarai, input NIMX: string, output P: Address) {mencari keberadaan data mahasiswa yang NIM-nya = NIMX, jika ditemukan maka hapus data mahasiswa tersebut} {K. Awal: L terdefinisi, X terdefinisi} {K.Akhir: Jika X ditemukan P adalah alamat elemen yang dihapus. Jika X ditemukan, maka P = Nil} procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak} procedure CariMhsTerbaik(input L: Senarai, output MhsTerbaik: DataMhs) {Mencari data mahasiswa dengan IPK tertinggi} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: MhsTerbaik terdefinisi, yaitu data mahasiswa dengan IPK tertinggi } function Selesai(input Pil:integer) boolean {mengembalikan true jika Pil = 5} P: Address L: Senarai Pil,k : integer X: TInfo NIMX: string[12] Create(L) repeat write( Pemrosesan Senarai ) write( 1. Penyisipan ) write( 2. Hapus Elemen ) Halaman - 9

write( 3. Cetak ) write( 4. Cari mahasiswa terbaik ) write( 5. Selesai ) write( Masukkan pilihan[1/2/3/4] ); read(pil) case (pil) 1: write ( Nama mahasiswa ); read(x.nama) write ( NIM? ); read(x.nim) write ( IPK ); read(x.ipk) Alokasi(P); Next(P) = Nil; Info(P) X write ( Sisipkan sebagai elemen ke-? ); read (k) SisipK(L, P, k) 2: write( NIM yang akan dihapus? ); read (NIMX) HapusX(L, NIMX, P) if (P = Nil) then write(nimx, tidak ditemukan ); else DeAlokasi(P) 3: Cetak 4: CariMhsTerbaik(L, MhsTerbaik) write( Mahasiswa terbaik adalah,mhsterbaik.nama, MhsTerbaik.NIM, MhsTerbaik.IPK) 5: write( Program Selesai ) endcase until (Selesai(Pil)) Halaman - 10

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-5, Pertemuan ke-7 dan ke-8 Nama file : P05-XXX (XXX adalah 3 digit terakhir NIM) Antrian Deklarasi: const NMAX = 10 {maksimum elemen larik} type TInfo = integer {atau tipe terdefinisi lainnya} type Address = integer[0..nmax] type Antrian = record <Head: Address, Tail: Address, ArrQ: array[1..nmax] of TInfo> Q: Antrian procedure CreateQ(output Q: Antrian) {membuat antrian kosong, representasi fisik larik} {K.Akhir: Q terdefinisi, Q.Head = 0, Q.Tail = 0} function EmptyQ(input Q: Antrian) boolean {mengembalikan true jika antrian kosong, Q.Head = 0 and Q.Tail = 0} procedure EnQueue(input/output Q: Antrian, input X: TInfo) {menyisipkan X sebagai elemen antrian yang direpresentasi secara fisik menggunakan larik} {K. Awal: Q terdefinisi, X terdefinisi} {K.Akhir: X menjadi elemen antrian} procedure DeQueue(input/output Q: Antrian, output X: TInfo) {menghapus elemen antrian yang direpresentasi dengan larik, elemen bergeser maju} {K. Awal: Q terdefinisi, tidak kosong} {K.Akhir: X adalah elemen yang dihapus, elemen bergeser maju, antrian mungkin jadi kosong} procedure Cetak(input Q: Antrian) {mencetak elemen antrian mulai dari Head sampai Tail} {K. Awal: Q terdefinisi} {K.Akhir: semua elemen antrian dicetak} Halaman - 11

function Selesai(input Pil:integer) boolean {mengembalikan true jika pil = 4} Create(Q) repeat write( Pemrosesan Antrian ) write( 1. Penyisipan ) write( 2. Hapus ) write( 3. Cetak ) write( 4. Selesai ) write( Pilihan [1/2/3/4] ); read(pil) case (Pil) 1: write( Info yang akan disisipkan? ); read(x) EnQueue(Q,X) 2: DeQueue(Q,X) write( Elemen yang dihapus adalah,x) 3: Cetak(Q) endcase until Selesai(pil) procedure Cetak(input Q: Antrian) {mencetak elemen antrian mulai dari Head sampai Tail} {K. Awal: Q terdefinisi} {K.Akhir: semua elemen antrian dicetak} Deklarasi: X: TInfo if Empty(Q) then write( Antrian kosong ) else while not Empty(Q) do DeQueue(Q,X) write (X) endwhile Halaman - 12

MODUL PRAKTIKUM STRUKTUR DATA Modul Ke-6, Pertemuan ke-9 Nama File: P06-XXX (XXX adalah 3 digit terakhir NIM) Tumpukan (Stack) Deklarasi global: const NMAX = 10 {maksimum elemen larik} type TInfo = integer {atau tipe terdefinisi lainnya} type Address = integer[0..nmax] type Stack= record <Top: Address,ArrQ: array[1..nmax] of TInfo> S: Stack procedure CreateStack(output S: Stack) {membuat Stack kosong, representasi fisik larik} {K.Akhir: S terdefinisi, S.Top = 0} function EmptyStack(input S: Stack) boolean {mengembalikan true jika Stack kosong, S.Top = 0} procedure Push(input/output S: Stack, input X: TInfo) {menyisipkan X sebagai elemen Stack yang direpresentasi secara fisik menggunakan larik} {K. Awal: S terdefinisi, X terdefinisi} {K.Akhir: X menjadi elemen stack} procedure Pop(input/output S: Stack, output X: TInfo) {menghapus elemen Stack yang direpresentasi dengan larik} {K. Awal: S terdefinisi, tidak kosong} {K.Akhir: X adalah elemen yang dihapus, stack mungkin jadi kosong} procedure Cetak(input S: Stack) {mencetak elemen Stack mulai top sampai bottom} {K. Awal: S terdefinisi} {K.Akhir: semua elemen Stack dicetak} function Selesai(input Pil:integer) boolean {mengembalikan true jika pil = 4} Halaman - 13

CreateStack(S) repeat write( Pemrosesan Stack ) write( 1. Penyisipan ) write( 2. Hapus ) write( 3. Cetak ) write( 4. Selesai ) write( Pilihan [1/2/3/4] ); read(pil) case (Pil) 1: write( Info yang akan disisipkan? ); read(x) Push(S,X) 2: if not EmptyStack(S) then Pop(S,X) write( Elemen yang dihapus adalah,x) else write ( stack kosong ) 3: Cetak(S) endcase until Selesai(pil) procedure Cetak(input S: Stack) {mencetak elemen Stack mulai dari Top sampai bottom} {K. Awal: S terdefinisi} {K.Akhir: semua elemen Stack dicetak} Deklarasi: X: Tinfo if EmptyStack(S) then write( Stack kosong ) else while not IsEmpty(S) do Pop(Q,X) write (X) endwhile Halaman - 14

MODUL PRAKTIKUM STRUKTUR DATA Modul Ke-8, Pertemuan ke-10 Nama File: P08-XXX (XXX adalah 3 digit terakhir NIM Graf Deklarasi global: const MakSimpul = 10 type Graf = array[1..maksimpul, 1..MakSimpul] of integer G: Graf Dikunjungi: array[1..maksimpul] of boolean NSimpul: integer procedure DFS(input v: integer) {menelusuri semua simpul graf secara dfs } {k. awal: v terdefinisi, yaitu simpul awal penelusuran } {k.akhir: semua simpul yang dikunjungi dicetak di layar} procedure BFS(input v: integer) {menelusuri seluruh simpul graf dengan skema bfs} {k. awal: v terdefinisi, yaitu simpul awal penelusuran} {k.akhir: semua simpul yang dikunjungi dicetak di layar} i,j,v,k: integer Deskripsi write ( banyak simpul? ); read (NSimpul) {buat graf} for i 1 to nsimpul do for j 1 to nsimpul do write ( simpul,i, terhubung dengan simpul,j,? ) read (G[i,j]) endfor endfor repeat write ( mulai dari simpul? ); read(v) write ( Kunjungan DFS ) {siapkan larik kunjungan untuk DFS} for k 1 to NSimpul do dikunjungi[k] false endfor Halaman - 15

DFS(v); write ( kunjungan BFS ); {siapkan larik kunjungan untuk BFS} for k 1 to NSimpul do dikunjungi[k] false; endfor BFS(v) getch(); until (v > NSimpul); Halaman - 16

MODUL PRAKTIKUM STRUKTUR DATA Modul Ke-8, Pertemuan ke-11 dan ke-12 Nama File: P08-XXX (XXX adalah 3 digit terakhir NIM Pohon Pencarian Biner (BST) Deklarasi global: type TInfo = integer {atau tipe terdefinisi lainnya} type BST = pointer to Simpul type Simpul = record <Info: TInfo, Kiri: BST, Kanan: BST> Akar: BST procedure Alokasi(output P: BST) {memesan satu unit penyimpan untuk dijadikan elemen bst} {K.Akhir: P terdefinisi, siap digunakan sebagai elemen bst} procedure DeAlokasi(input P: Address) {K. Awal: P terdefinisi} {K.Akhir: P dikembalikan ke sistem} procedure Create(output Akar: BST) {membuat BST kosong} {K.Akhir: Akar = Nil} procedure InOrder(input Akar: BST) {menelusuri BST secara inorder} {K. Awal: Akar terdefinisi } {K.Akhir: semua simpul dikunjungi secara inorder} procedure PreOrder(input Akar: BST) {menelusuri BST secara preorder} {K. Awal: Akar terdefinisi } {K.Akhir: semua simpul dikunjungi secara preorder} procedure PostOrder(input Akar: BST) {menelusuri BST secara postorder} {K. Awal: Akar terdefinisi } {K.Akhir: semua simpul dikunjungi secara postorder} procedure InsertBST(input/output Akar: BST, input X: TInfo) Halaman - 17

{menyisipkan X ke dalam BST} {K. Awal: Akar terdefinisi, X terdefinisi } {K.Akhir: X menjadi elemen daun} procedure DeleteBST(input/output Akar: BST, input X: TInfo, output Found: boolean) {menghapus simpul BST yang info-nya = X} {K. Awal: BST terdefinisi, tidak kosong} {K.Akhir: Jika X ada maka simpul yang info-nya = X dihapus dari BST dan Found = true. Jika X tidak ada maka Found = false} function Selesai(input Pil:integer) boolean {mengembalikan true jika pil = 3} create(akar) repeat write("traversal inorder: ");inorder(akar) write("traversal preorder: ");preorder(akar) write("traversal postorder: ");postorder(akar) write("1. penyisipan") write("2. hapus") write("3. selesai") write("pilihan [1/2/3] "); read(pil) if pil = 1 then write("masukkan info yang disisipkan "); read(x) insertbst(akar, x) else if pil = 2 then write("masukkan info yang akan dihapus "); read(x) deletebst(akar,x,found) if not found then write(x, tidak ditemukan") else if pil = 3 then write("program selesai") else write("salah pilih ") { pil = 3 } Halaman - 18

{ pil = 2 } {pil = 1 } until selesai(pil) Halaman - 19