{ Program Pointer Pertama } { Program Pointer Single Linklist }

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

BAB VII SENARAI BERANTAI (List)

Lab. Teknik Informatika Struktur Data 1

KERUGIAN DAN KEUNTUNGAN LINKED LIST

2 SENARAI/LIST BERANTAI GANDA

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

1. Kompetensi Mengenal dan memahami struktur data Stack (tumpukan) dan Queue (antrian).

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

ALGORITMA & PEMROGRAMAN

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

QUEUE (ANTRIAN) Struktur Data - Queue

Pertemuan VI ANTRIAN (Queue)

6. TREE / BINARY TREE

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Stack.

BAB III QUEUE (ANTRIAN)

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

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

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

BAB VI SEARCHING (PENCARIAN)

4. STACK / TUMPUKAN TEORI PENUNJANG

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

Queue. Implementasi Queue dengan Array

Linked List. Bandung 2013

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

MODUL STRUKTUR DATA. Erna Kumalasari Nurnawati

Struktur Data. Pertemuan 2

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

Algoritma & Pemrograman 1. Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia

BAB II STACK Atau TUMPUKAN

LOGO STRUKTUR DATA QUEUE

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

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-1

SORTING. Brigida Arie Minartiningtyas, M.Kom

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

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

MODUL 1. Struktur Bahasa PASCAL secara umum

Pengenalan Pascal. Sejarah Singkat Pascal

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

Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :

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

ARRAY. Larik / array adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama.

Teori Algoritma TIPE DATA

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

Dasar Komputer & Pemrogaman 2A

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

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

& PEMROGRAMAN. Alex De Kweldju, S.Kom D3 Teknik Komputer Fakultas Teknik Universitas Negeri Papua

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

BAB 1 PENGANTAR KE STRUKTUR DATA

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

QUEUE. Struktur data ini banyak dipakai dalam informatika misalnya untuk merepresentasi: antrian job dalam sistem operasi antrian dalam dunia nyata.

Memulai Pemrograman Pascal dengan Delphi Console 1. Buka aplikasi delphi 2. Pilih File New Other Console Application

ANTRIAN ( QUEUE ) NAMA KELOMPOK : 1.EKA PRIHANTORO 2.FATKHUL ELEKTRIK PSH 3.RIZKY GUMILANG CR

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

Pointer. Pengertian. Struktur Data Pascal

TIF 4201 Algoritma Dan Struktur Data

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

JENIS-JENIS DATA DAN STATEMEN INPUT OUTPUT

Algoritma Pemrograman

STACK (TUMPUKAN) & QUEUE (ANTRIAN) Altien Jonathan Rindengan, S.Si., M.Kom.

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

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

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

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

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

BAB XI Manipulasi Binary Tree

TIPE, NAMA, DAN NILAI

KONSEP DASAR BAHASA PASCAL

KONSEP DASAR BAHASA PASCAL

Bab 1 Pengenalan Pascal 1 BAB I PENGENALAN PASCAL, TIPE-TIPE DATA PASCAL DAN STATEMEN DASAR PADA PASCAL TUJUAN PRAKTIKUM TEORI PENUNJANG

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

PROJECT UJIAN AKHIR SEMESTER MATA KULIAH STRUKTUR DATA Program Kalkulator Scientific Sederhana

Bubble Sort (Pengurutan Gelembung / Pemberatan)

Algoritma dan Struktur Data

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

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

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

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 9

PENGANTAR ALGORITMA DAN PEMROGRAMAN

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

LAPORAN AKHIR PRAKTIKUM STRUKTUR DATA

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

MODUL PRAKTIKUM STRUKTUR DATA

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-5

BAB IX LINKED LIST (SENARAI BERANTAI)

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

Bab 2 DASAR-DASAR ALGORITMA

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

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Algoritma Pemrograman

Nama : Suseno Rudiansyah NPM : Kelas : X2T Prodi : Teknik Informatika Tugas : Kuis Algoritma 2

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

Algoritma Pemrograman

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

Teori Algoritma. Struktur Algoritma

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

Modul 1 Pengantar Bahasa Pascal

Transkripsi:

{ Program Pointer Pertama } type ptr = ^mhs; mhs = record nim : string; nama : string; nilai: byte; next : ptr; m : ptr; new (m); write (' NIM : '); readln (m^.nim); write (' NAMA : '); readln (m^.nama); write (' NILAI m^.next := nil; writeln (m^.nim); writeln (m^.nama); writeln (m^.nilai); : '); readln (m^.nilai);. { Program Pointer Single Linklist } type simpul = ^data; data = record isi : string; next : simpul; elemen : string; awal,akhir,baru,posisi,hapus,bantu : simpul; procedure tambah_belakang (elemen : string); new(baru); baru^.isi := elemen; if awal = nil then awal := baru akhir^.next := baru; akhir := baru; akhir^.next := nil; procedure tambah_depan (elemen : string); new(baru); baru^.isi := elemen; if awal = nil then akhir := baru baru^.next := awal; awal := baru; akhir^.next := nil; procedure hapus_simpul (elemen : string); if awal = nil then writeln ('List Kosong') if awal^.isi = elemen then hapus := awal; awal := hapus^.next; dispose(hapus); 1

bantu := awal ; posisi := awal; while (elemen <> posisi^.isi) and (posisi^.next <> nil) do bantu := posisi; hapus := posisi; if (hapus^.next <> nil) and (posisi^.isi = elemen) then posisi := hapus^.next; bantu^.next := posisi; dispose(hapus); if hapus^.isi = elemen then akhir := bantu; akhir^.next := nil; dispose(hapus); writeln ('Simpul Yang Akan Dihapus Tidak Ada'); tambah_belakang ('A'); tambah_belakang ('F'); tambah_belakang ('B'); tambah_belakang ('C'); tambah_depan ('S'); tambah_depan ('K'); hapus_simpul ('C'); posisi := awal; repeat write (posisi^.isi); until posisi = nil;. { Program Pointer Double Linklist } type ptr = ^data; data = record isi : string; pre, next : ptr; baru,posisi,awal,akhir,bantu,hapus : ptr; procedure tambah_belakang (elemen : string); new (baru); baru^.isi := elemen; baru^.pre := nil; baru^.next := nil; if awal = nil then awal:=baru 2

akhir^.next := baru; baru^.pre := akhir; akhir := baru; akhir^.next := nil; procedure tambah_depan (elemen : string); new (baru); baru^.isi := elemen; baru^.pre := nil; baru^.next := nil; if awal = nil then awal:=baru awal^.pre := baru; baru^.next := awal; awal := baru; awal^.pre := nil; procedure tambah_tengah (elemen : string; n : byte); panjang, i : byte; new (baru); baru^.isi := elemen; baru^.pre := nil; baru^.next := nil; if awal <> nil then posisi := awal; panjang:= 0; repeat inc(panjang); until posisi = nil; if (n>1) and (n<=panjang) then posisi := awal; for i:= 1 to n-2 do bantu := posisi^.next; posisi^.next := baru; baru^.pre := posisi; baru^.next := bantu; bantu^.pre := baru; writeln ('Posisi Pointer Tidak Ada Di Tengah'); writeln ('Pointer Belum Ada'); procedure hapus_simpul (elemen : string); { Hapus Pointer Di Awal } if awal^.isi = elemen then hapus := awal; awal := awal^.next; awal^.pre:= nil; 3

dispose (hapus); { Hapus Pointer Di Tengah } posisi := awal; while (posisi^.isi <> elemen) and (posisi^.next <> nil) do if posisi^.next <> nil then bantu := posisi^.pre; hapus := posisi; bantu^.next := posisi; posisi^.pre := bantu; dispose(bantu); { Hapus Pointer Di Akhir } if posisi^.isi = elemen then hapus := posisi; akhir := posisi^.pre; akhir^.next:= nil; dispose(hapus); writeln ('Pointer Tidak Ditemukan'); procedure baca_depan; posisi := awal; repeat write (posisi^.isi); until posisi = nil; procedure baca_belakang; posisi := akhir; repeat write (posisi^.isi); posisi := posisi^.pre; until posisi = nil; tambah_belakang ('A'); tambah_belakang ('B'); tambah_belakang ('C'); tambah_belakang ('D'); tambah_depan ('Z'); tambah_depan ('X'); tambah_tengah ('P',3); hapus_simpul ('A'); baca_depan; writeln; baca_belakang;. 4

{ Hasil Eksekusi : XZPBCD DCBPZX } { Program Queue } const max = 100; type antri = array[1..max] of char; q : antri; depan,belakang : integer; procedure tambah (x : char); if belakang = max then writeln ('Antrian Penuh') belakang := belakang + 1; q[belakang] := x; { procedure untuk menghapus dari belakang } procedure hapus_geser_belakang; i : byte; if belakang < depan then writeln ('Antrian Kosong') for i:= belakang-3 downto 1 do q[i] := q[i-1]; belakang:= belakang+1; { procedure untuk menghapus dari depan } procedure hapus_geser_depan; i : byte; if belakang < depan then writeln ('Antrian Kosong') for i:= 1 to belakang-1 do q[i] := q[i+1]; belakang := belakang-1; procedure baca; i : byte; for i:= depan to belakang do write (q[i]); procedure info; writeln; 5

writeln ('Depan = ', depan); writeln ('Belakang = ', belakang); depan := 1; belakang:= 0; tambah ('A'); tambah ('B'); tambah ('C'); tambah ('D'); tambah ('E'); hapus_geser_belakang; hapus_geser_belakang; hapus_geser_belakang; hapus_geser_belakang; baca; info;. { Program Queue Tambah Putar } const max = 100; type antri = array[1..max] of char; q : antri; depan,belakang : integer; procedure tambah_putar (x : char); if (belakang = max) and (depan = 1) or ((belakang + 1) = depan) then writeln ('Antrian Penuh') if belakang = max then belakang := 1 belakang := belakang + 1; q[belakang] := x; if depan = 0 then depan := 1; procedure hapus_putar; if depan = belakang then depan := 0; belakang := 0; writeln ('Antrian Penuh'); if depan = max then depan := 1 depan := depan +1; 6

procedure baca; i : byte; for i:= depan to belakang do write (q[i]); procedure info; writeln; writeln ('Depan = ', depan); writeln ('Belakang = ', belakang); depan := 0; belakang:= 0; tambah_putar ('A'); tambah_putar ('B'); tambah_putar ('C'); tambah_putar ('D'); tambah_putar ('E'); hapus_putar; hapus_putar; hapus_putar; hapus_putar; tambah_putar ('H'); tambah_putar ('K'); baca; info;. { Hasil Eksekusi : EHK } { Program Stack / Tumpukan (FIFO) } const max = 10; type tumpukan = array [1..max] of char; t : tumpukan; atas : byte; procedure push (x : char); if atas = max then writeln ('Tumpukan Penuh') atas := atas + 1; t[atas] := x; procedure pop; if atas = 0 then writeln ('Tumpukan Kosong') atas := atas - 1; 7

procedure baca; i : byte; writeln ('Atas = ', atas); for i:= 1 to atas do gotoxy(2,atas+3-i); write (t[i]); push ('A'); push ('B'); push ('C'); push ('D'); push ('E'); push ('F'); pop; pop; baca;. { Program Searching1 ) Program Searching; type larik = array [1..1000] of integer; a : larik; posisi : larik; n,m,x : integer; ada : boolean; procedure cari_vektor ( a : larik); i, data : integer; write (' Data Yang Dicari : '); readln (data); ada := false; x := 0; for i:= 1 to n do if a[i] = data then inc (x); posisi [x] := i; ada := true; if not ada then inc (n); a [n] := data; procedure isi; i : integer; write (' Jumlah Data : '); readln (m); for i:= 1 to m do 8

write (' A[',i,'] : '); readln (a[i]); n := m; procedure info; i : integer; writeln (' Data Awal '); for i:= 1 to m do write (' ',a[i],' '); writeln; if ada then write (' Data Ditemukan Pada Posisi : '); for i:= 1 to x do write (posisi[i],' '); writeln (' Data Tidak Ditemukan '); writeln (' Data Akhir '); for i:= 1 to n do write (' ',a[i],' '); isi; cari_vektor (a); info;. { Program Searching2 ) Program Searching2; type larik = array [1..1000] of integer; a : larik; posisi : integer; n,m,x,j : integer; ada : boolean; procedure cari_vektor_urut_naik ( a : larik); i, data : integer; write (' Data Yang Dicari : '); readln (data); ada := false; i := 1; j := 0; repeat if a[i] = data then posisi := i; ada := true; if a[i] > data then j := i; i := n; 9

inc (i); until (i > n) or ada; if not ada then if j=0 then a[n+1] := data for i:= n downto j do a[i+1] := a[i]; a[j] := data; inc (n); procedure isi; i : integer; write (' Jumlah Data : '); readln (m); for i:= 1 to m do write (' A[',i,'] : '); readln (a[i]); n := m; procedure info; i : integer; if ada then write (' Data Ditemukan ') write (' Data Tidak Ditemukan '); for i:= 1 to n do write (a[i],' '); isi; cari_vektor_urut_naik (a); info;. { Program Searching3 ) Program Searching3; type larik = array [1..1000] of integer; a : larik; posisi,atas,bawah,tengah : integer; n,m : integer; ada : boolean; procedure cari_biner ( a : larik); i, data : integer; write (' Data Yang Dicari : '); readln (data); ada := false; 10

atas := n; bawah := 1; while atas >= bawah do tengah := (atas+bawah) div 2; if data < a[tengah] then atas := tengah - 1 if data > a[tengah] then bawah := tengah + 1 ada := true; posisi := tengah; bawah := atas +1; if ada then write (' Data Ditemukan Pada Posisi ', posisi) write (' Data Tidak Ditemukan '); procedure isi; i : integer; write (' Jumlah Data : '); readln (m); for i:= 1 to m do write (' A[',i,'] : '); readln (a[i]); n := m; isi; cari_biner (a);. { Program Pohon <tree> Non_Rekursif } Program Pohon_Non_Rekursif; type tree = ^simpul; simpul = record info : char; kiri,kanan : tree; bantu,p,q,b : tree; function baru (hrf:char):tree; b : tree; new(b); b^.info := hrf; b^.kanan := nil; b^.kiri := nil; baru := b; 11

procedure sisip_non_rekursif ( akar : tree; hrf : char); b := baru(hrf); if akar = nil then akar := b q := akar; p := akar; while (hrf<>p^.info) and (q<>nil) do p := q; if hrf < p^.info then q := p^.kiri q := p^.kanan; if hrf = p^.info then write ('Data Sudah Ada') if hrf < p^.info then p^.kiri := b p^.kanan := b; sisip_non_rekursif (bantu,'d'); sisip_non_rekursif (bantu,'b'); sisip_non_rekursif (bantu,'c'); sisip_non_rekursif (bantu,'e'); write (b^.info);. { Program Pohon <tree> Rekursif ) Program Pohon_Rekursif; type tree = ^simpul; simpul = record info : char; kiri,kanan : tree; pohon,bantu,p,q,b : tree; function baru (hrf:char):tree; b : tree; new(b); b^.info := hrf; b^.kanan := nil; b^.kiri := nil; baru := b; procedure sisip_rekursif ( pohon : tree; hrf : char); if pohon = nil then pohon := baru(hrf) if pohon^.info > hrf then sisip_rekursif (pohon^.kiri,hrf) if pohon^.info < hrf then sisip_rekursif (pohon^.kanan,hrf) 12

write ('karakter ',hrf,' sudah ada'); sisip_rekursif (bantu,'d'); sisip_rekursif (bantu,'b'); sisip_rekursif (bantu,'c'); sisip_rekursif (bantu,'a'); sisip_rekursif (bantu,'f'); sisip_rekursif (bantu,'e'); write (b^.info);. Eksekusi Searching 1 : Jumlah Data : 5 A[1] : 5 A[2] : 6 A[3] : 8 A[4] : 9 A[5] : 10 Data Yang Dicari : 1 Data Awal 5 6 8 9 10 Data Tidak Ditemukan Data Akhir 5 6 8 9 10 1 Eksekusi Searching 2 : Jumlah Data : 5 A[1] : 1 A[2] : 3 A[3] : 5 A[4] : 7 A[5] : 9 Data Yang Dicari : 8 Data Tidak Ditemukan 1 3 5 7 8 9 Eksekusi Searching 3 : Jumlah Data : 5 A[1] : 1 A[2] : 4 A[3] : 7 A[4] : 9 A[5] : 10 Data Yang Dicari : 11 Data Tidak Ditemukan 13