Bahan Kuliah Struktur Data
-
Upload
ridwan-setiawan -
Category
Documents
-
view
2.433 -
download
3
Transcript of Bahan Kuliah Struktur Data
![Page 1: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/1.jpg)
Halaman 1
STRUKTUR DATASTRUKTUR DATA
PengajarPengajarJaidanJaidan JauhariJauhari, MT, MT
AlamatAlamat [email protected][email protected]
[email protected][email protected]
DisarikanDisarikan Dari Dari BerbagaiBerbagai SumberSumber, , TerutamaTerutama Dari Diktat Dari Diktat StrukturStruktur Data Data InformatikaInformatikaITB ITB KaranganKarangan Dr. Dr. InggrianiInggriani LiemLiem
![Page 2: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/2.jpg)
Halaman 2
SILABUS MATERI KULIAHSILABUS MATERI KULIAH
Pengantar Struktur DataReview Record dan ArrayStack (Tumpukan)Queue (Antrian)Linked List dan Variasi ListMultiListPohon BinerGraph
![Page 3: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/3.jpg)
Halaman 3
BUKU SUMBERBUKU SUMBER1. Inggriani Liem. 1997. Diktat Kuliah Algoritma dan
Pemrograman Prosedural. Bandung : ITB2. Inggriani Liem. 2003. Diktat Kuliah Struktur Data.
Bandung : ITB3. Rinaldi Munir. 2003. Algoritma dan Pemrograman II.
Bandung : Penerbit Informatika4. Bambang Wahyudi. 2004. Struktur Data dan Algoritma.
Yogyakarta : Andi Offset5. Dwi Sanjaya. 2001. Bertualang dengan Struktur Data di
Planet Pascal. Yogyakarta : JJ Learning6. P. Insap Santoso.1997. Struktur Data dengan Turbo
Pascal. Yogyakarta : Andi Offset
![Page 4: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/4.jpg)
Halaman 4
KomponenKomponen PenilaianPenilaian
Tugas 20%Ujian 1 20 % (Pertemuan ke-4)Ujian 2 20% (Pertemuan ke-8)Ujian 3 20% (Pertemuan ke-12)Ujian Akhir Semester 20%
![Page 5: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/5.jpg)
Halaman 5
AturanAturan dandan SanksiSanksi--sanksisanksiKehadiran minimal 80%, kurang dari 80% tidak lulus (mendapat nilai E)Keterlambatan maksimal 10 menit (Lebih dari 10 menit tidakdiijinkan memasuki ruangan)Pengumpulan Tugas yang melebihi waktu yang telah ditentukanakan diberikan nilai nolKecurangan dalam bentuk apapun akan mendapatkan nilai EMahasiswa berpakaian rapi dan sopan, yang ditunjukkan antara lain 1. Memakai sepatu tertutup2. Memakai baju berkerah3. Tidak memakai aksesoris yang tidak diijinkan4. Tidak memakai pakaian yang kurang dasar atau lebih dasar5. dan lain-lainSelama perkuliahan berlangsung mahasiswa tidak diijinkanmeninggalkan ruang kuliah kecuali sangat terpaksa dan itupunharus membuat surat ijin dan hanya boleh satu kali
![Page 6: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/6.jpg)
Halaman 6
PENGERTIAN STRUKTURPENGERTIAN STRUKTUR DATADATA
Struktur data adalah cara menyimpan ataumerepresentasikan data di dalam komputer agar bisa dipakai secara efisien
Sedangkan data adalah representasi dari fakta dunianyata.
Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalambentuk tulisan, suara, gambar, sinyal atausimbol
![Page 7: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/7.jpg)
Halaman 7
Secara garis besar type data dapat dikategorikanmenjadi :1. Type data sederhana
a. Type data sederhana tunggal, misalnyaInteger, real, boolean dan karakter
b. Type data sederhana majemuk, misalnyaString
2. Struktur Data, meliputia. Struktur data sederhana, misalnya array dan
record
![Page 8: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/8.jpg)
Halaman 8
b. Struktur data majemuk, yang terdiridariLinier : Stack, Queue, serta List dan
MultilistNon Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat di dalamproses pemrograman akan menghasilkanalgoritma yang lebih jelas dan tepat, sehingga menjadikan program secarakeseluruhan lebih efisien dan sederhana.
![Page 9: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/9.jpg)
Halaman 9
Struktur data yang ″standar″ yang biasanyadigunakan dibidang informatika adalah :
List linier (Linked List) dan variasinyaMultilistStack (Tumpukan)Queue (Antrian) Tree ( Pohon ) Graph ( Graf )
![Page 10: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/10.jpg)
Halaman 10
REVIEW RECORD (REKAMAN)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.
![Page 11: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/11.jpg)
Halaman 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 Jammaka cara mengacu tiap field adalah J.hh, J.mmdan J.ss
![Page 12: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/12.jpg)
Halaman 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;
![Page 13: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/13.jpg)
Halaman 13
REVIEW ARRAY (LARIK)REVIEW ARRAY (LARIK)
1. PendahuluanLarik 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.
![Page 14: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/14.jpg)
Halaman 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
![Page 15: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/15.jpg)
Halaman 15
Cara Pendefinisian Array1. Sebagai Peubah
Contoh :L : array[1..50] of integerNamaMhs : array[‘a’..’j’] of string
2. Sebagai tipe baruContoh :type LarikInt : array[1..100] of integerP : LarikInt
![Page 16: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/16.jpg)
Halaman 16
3. Mendefinisikan ukuran maksimum elemen larik sebagai konstantaContoh :Const Nmaks = 100 type Larikint : array[1..Nmaks] of integerP : LarikInt
Cara menterjemahkan ke bahasa C :#define Nmaks 100typedef int Larikint[Nmaks+1];Larikint P;
![Page 17: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/17.jpg)
Halaman 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 }
![Page 18: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/18.jpg)
Halaman 18
Menginisialisasi Larik
menginisialisasi elemen larik adalah memberikanharga awal untuk seluruh elemen larik, misalnyamenginisialisasi 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 : integerDeskripsi :
for k 1 to N doA[k] 0
endfor
![Page 19: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/19.jpg)
Halaman 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 : integerDeskripsi :
for k 1 to N doread (A[k])
endfor
![Page 20: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/20.jpg)
Halaman 20
Larik Bertype Terstruktur
Larik tidak hanya dapat berisi data bertype tunggal, tapi dapat juga berisi data yang bertipeterstruktur
Contoh :const Nmaks = 100type Mahasiswa : record
<nim : integer,nama_mhs : string,KodeMK : string,Nilai : char >
TabMhs : array[1..Nmaks] of Mahasiswa
![Page 21: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/21.jpg)
Halaman 21
Contoh Cara mengacu elemen TabMhs :1. TabMhs[2].Nim
mengacu field Nim dari elemen kedualarik
2. Write(TabMhs[k].KodeMK)menuliskan field KodeMK dari elemenke k dari larik
![Page 22: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/22.jpg)
Halaman 22
TugasTugas 11
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, NamaNasabah, Alamat Nasabah, Kota Nasabah, danNomor Telpon Nasabah.Untuk setiap field definisikan type data yang cocok
![Page 23: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/23.jpg)
Halaman 23
2.Dari soal nomor 1 buatlah program dalambahasa pemrograman berbasis bahasa C, untukmemasukkan data nasabah sebanyak N, denganN diinputkan dari papan ketik, kemudianmenuliskan kembali semua data nasabah dalambentuk matrik.Petunjuk :
Gunakan notasi pengulangan untukmenyelesaikan permasalahan tersebut
Tugas dikumpulkan pada pertemuanberikutnya disertai listing program dancontoh keluarannya
![Page 24: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/24.jpg)
Halaman 24
ADT (Abstract Data Type)ADT (Abstract Data Type)ADT adalah definisi type dan sekumpulanprimitif (operasi dasar) terhadap type tersebut.Type diterjemahkan menjadi type terdefinisidalam bahasa pemrograman yang bersangkutan, misalnya menjadi record dalamPascal/Ada dan Struct dalam bahasa C
![Page 25: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/25.jpg)
Halaman 25
Primitif dalam konteks pemrogramanprosedural, diterjemahkan menjadifungsi dan prosedur.
Primitif dikelompokkan menjadi :1. Konstruktor/Kreator, pembentuk nilai
type. Biasanya namanya diawali denganMake.
2. Selektor, untuk mengakses komponen type. Biasanya namanya diawali denganGet.
![Page 26: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/26.jpg)
Halaman 26
3. Prosedur Pengubah nilai komponen4. Validator komponen type, yang
dipakai untuk mengetes apakah dapatmembentuk type sesuai batasan.
5. Destruktor/Dealokator, yaitu untukmenghancurkan nilai objek, sekaligusmemori penyimpannya
6. Baca/tulis, untuk interface denganinput/output device
![Page 27: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/27.jpg)
Halaman 27
7. Operator Relasional terhadap type tersebut untuk mendefinisikan lebihbesar, lebih kecil, sama dengan dansebagainya.
8. Aritmatika terhadap type tersebut, dalam pemrograman biasanya hanyaterdefinisi untuk bilangan numerik.
9. Konversi dari type tersebut ke type dasar dan sebaliknya
![Page 28: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/28.jpg)
Halaman 28
ADT biasanya diimplementasi menjadi dua buahmodul, yaitu :1. Definisi/spesifikasi type dan primitif
- Spesifikasi type sesuai denganbahasa yang dipakai
- Spesifikasi dari primitif sesuai dengan kaidahdalam konteks prosedural, yaitu :a. Fungsi : nama, domain, range, dan pre kondisi
jika adab. Prosedur : Keadaan Awal, Keadaan Akhir dan
proses yang dilakukan2. Body/realisasi dari primitif, berupa kode program dalam
bahasa yang bersangkutan. Realisasi fungsi dan prosedurharus sedapat mungkin memanfaatkan Selektor danKonstruktor
![Page 29: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/29.jpg)
Halaman 29
![Page 30: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/30.jpg)
Halaman 30
4. Linked List (List Linier)4. Linked List (List Linier)4.1. DefinisiList linier adalah sekumpulan elemen
bertype sama, yang mempunyaiketerurutan tertentu, yang setiapelemennya terdiri dari 2 bagian :
Type Elmtlist = record< Info : InfoType,
Next : address >
![Page 31: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/31.jpg)
Halaman 31
Dengan Info Type adalah sebuah type terdefenisi yang menyimpan informasisebuah elemen list ; Next adalah address dari elemen berikutnya ( suksesor ).
Dengan demikian, jika didefinisikan First adalah alamt elemen pertama list, makaelemen berikutnya dapat diakses secarasuksesif dari elemen pertama tersebut
![Page 32: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/32.jpg)
Halaman 32
Jadi, sebuah list linier dikenali :elemen pertamanya, biasanya melalui alamatelemen pertama yang disebut : Firstalamat elemen berikutnya ( suksesor ), jikakita mengetahui alamat sebuah elemen , yang dapat diakses melalui field NEXTsetiap elemen mempunyai alamat, yaitutempat elemen disimpan dapat diacu.Untukmengacu sebuah elemen , alamat harusterdefenisi . Dengan alamat tersebut Informasiyang tersimpan pada elemen list dapat diakses. elemen terakhirnya. Ada berbagai cara untukmengenali elemen akhir
![Page 33: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/33.jpg)
Halaman 33
Jika L adalah list , dan P adalah address :Alamat elemen pertama list L dapat diacudengan notasi :
First (L)Elemen yang diacu oleh P dapat dikonsultasiinformasinya dengan notasi :
Info(P)Next(P)
![Page 34: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/34.jpg)
Halaman 34
Beberapa defenisi :1. List L adalah List kosong , jika First (L) = Nil2. Elemen terakhir dikenali, dengan salah satu
cara adalah karena Next(Last) =Nil
![Page 35: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/35.jpg)
Halaman 35
II. Skema traversal untuk list linierList terdiri dari sekumpulan elemen. Seringkali diperlukan untuk memprosessetiap elemen list dengan cara yang sama. Karena itu salah primitif operasi konsultasidasar pada struktur list adalah traversal, yaitu “mengunjungi” setiap elemen list untuk diproses.
![Page 36: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/36.jpg)
Halaman 36
Karena Urutan akses adalah dari elemenpertama sampai dengan elementerakhir, maka traversal list secaranatural dilakukan dari elemen pertama, suksesornya, dan seterusnya sampaidengan elemen terakhir.
![Page 37: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/37.jpg)
Halaman 37
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
![Page 38: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/38.jpg)
Halaman 38
Deklarasi :P : address { address untuk traversal , type
terdefenisi }Deskripsi :
InisialisasiP ← First ( L ) { First Element } While ( P ≠Nil ) do
Proses ( P )P ← Next ( P ) { Next element }
endwhileTerminasi
![Page 39: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/39.jpg)
Halaman 39
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 pemrosesankhusus pada list kosong }
Deklarasi :
![Page 40: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/40.jpg)
Halaman 40
DeklarasiP : address { address untuk traversal , type
terdefenisi }Deskripsi
If (First ( L ) = Nil) then Write ( ‘List kosong ‘ )
else
![Page 41: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/41.jpg)
Halaman 41
InsialisasiP ← First ( L ) { First Element }Repeat
Proses ( P )P ← Next ( P ) { Next element }
until P=NilTerminasi
![Page 42: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/42.jpg)
Halaman 42
III. Skema Sequential Search untuk list linier Selain traversal, proses pencarian suatu elemenlist adalah primitif yang sering kali didefinisikan pada struktur list. Pencariandapat berdasarkan nilai, atau berdasarkanalamat.
III.1. Search suatu Nilai, output adalah addressSearch ini sering dipakai untuk mengenalisuatu elemen list berdasarkan nilai informasiyang disimpan pada elemen yang dicari. Biasanya dengan alamat yang ditemukan, akan dilakukan suatu proses terhadap elemenlist tersebut.
![Page 43: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/43.jpg)
Halaman 43
Procedure SKEMAListSearch1 ( Input L : List, X : InfoType, Output P : address, Found: Boolean )
{ K. Awal : List linier L sudah terdefinisi dan siapdikonsultasi, X terdefenisi }
{ K.Akhir : P : address pada pencarian beurutan, dimana X diketemukan, P = Nil jikatidak ketemu, Found berharga true jikaharga X yang dicari ketemu, false jikatidak }
![Page 44: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/44.jpg)
Halaman 44
{Proses : Sequential Search harga X pada sebuahlist linier L, Semua elemen diperiksa
dengan intruksi yang sama, versidengan Boolean}
Deklarasi
Deskripsi
![Page 45: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/45.jpg)
Halaman 45
P ← First ( L )Found ← falseWhile ( P ≠ Nil ) and ( not found ) do
if X = Info (P) thenFound ←True
else P ← Next (P)
endifendwhile { P = Nil or Found}{Jika Found maka P adalah address dimana
harga yang dicari diketemukan}
![Page 46: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/46.jpg)
Halaman 46
III. 2. Search suatu Elemen yang beralamat tertentu
Procedure SKEMAList Search@( Input L : List, P : address, Found: Boolean )
{K. Awal : List linier L sudah terdefinisi dan siapdikonsultasi, 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 Search @ P pada sebuah list linier L, Semua elemen diperiksa dengan intruksiyang sama }
![Page 47: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/47.jpg)
Halaman 47
DeklarasiPt : address
DeskripsiPt ← First ( L )Found ← falseWhile ( Pt ≠ Nil ) and ( not found ) do
if Pt = P thenFound ← true
else Pt ← Next (Pt)
endifendwhile { Pt = Nil or Found}{ Jika Found maka P adalah elemen list}
![Page 48: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/48.jpg)
Halaman 48
IV. Definisi fungsional list linier danalgoritmanyaSecara 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, makaoperasi yang dapat dilakukan :
ListEmpty, CreateList, Insert, Delete, Concat dan UpdateList
![Page 49: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/49.jpg)
Halaman 49
IV. 1. Pengetesan List KosongPemeriksaan apakah sebuah list kosong sangat
penting, karena Keadaan Awal danKeadaan Akhir beberapa prosedur harusdidefinisikan berdasarkan keadaan list. Operasi pada list kosong sering kali membutuhkan penanganan khususRealisasi algoritmik dari definisifungsional ini adalah sebuah fungsisebagai berikut.
![Page 50: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/50.jpg)
Halaman 50
Function IsEmptyList (L : List ) → boolean{ Test apakah sebuah list L kosong,
Mengirimkan true jika list kosong, falsejika tidak kosong}
DeklarasiDeskripsi
return(First (L) = Nil)
![Page 51: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/51.jpg)
Halaman 51
IV.2 Pembuatan sebuah elemen padalist linier
Pembuatan sebuah list berarti membuatsebuat list KOSONG, yang selanjutnyasiap diproses (ditambah elemennya, dsb). Realisasi algoritmik daridefenisi funfsional ini adalah sebuahprosedur sebagai berikut.
![Page 52: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/52.jpg)
Halaman 52
Procedure CreateList( Output L : List ){K. Awal : Sembarang }K. Akhir : terbentuk list L yang kosong : First
(L) diinisialisasi dengan NIL )Proses : Membuat list kosong}
DeklarasiDeskripsi
First (L) ← Nil
![Page 53: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/53.jpg)
Halaman 53
IV. 3 Penyisipan sebuah elemenpada list linier
Fungsi insert (penyisipan) harus dijabarkan lebihrinci, karena dapat menjadi penyisipan sebagaielemen pertama, setelah sebuah address P ataupenyisipan menjadi elemen terakhir ataubahkan menjadi elemen ditengah
Penyisipan sebuah elemen dapat dilakukanterhadap sebuah elemen yang sudah dialokasi(diketahui address-nya ), atau sebuah elemenyang hanya diketahui nilai Info-nya (berartibelum dialokasi).
![Page 54: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/54.jpg)
Halaman 54
IV. 2.1. 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 mungkinkosong}
DeklarasiDeskripsi
Next (P) ← First (L)First (L) ← P
![Page 55: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/55.jpg)
Halaman 55
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 gagallist tetap seperti semula }
{ Proses : Insert sebuah elemen sebagai elemen pertama list} Deklarasi
P : addressDeskripsi
Alokasi (P)If P ≠ Nil then
Info (P) ← ENext (P) ← First (L) First (L) ← P
![Page 56: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/56.jpg)
Halaman 56
IV.2.2. INSERT-AFTER Menyisipkan sebuah elemen beralamat P sebagai
suksesor dari sebuah elemen list linier yang beralamatPrec
Procedure InsertAfter ( Input P, Prec: address ){K. Awal : Prec adalah elemen list, prec ≠ Nil, P sudah
dialokasikan, P ≠ Nil, Next (P) = NilK. Akhir : P menjadi suksesor PrecProses : Insert sebuah elemen beralamat P pada List
linier L}DeklarasiDeskripsi
Next (P) ← Next (Prec) Next (Prec) ← P
![Page 57: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/57.jpg)
Halaman 57
IV. 2.3. INSERT – LastMenyisipkan 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 LProses : Insert sebuah elemen beralamat P sbg elemen
terakhir dari list linier L yg mungkin kosong }
![Page 58: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/58.jpg)
Halaman 58
DeklarasiLast : address { address untuk traversal}
DeskripsiIf 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
![Page 59: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/59.jpg)
Halaman 59
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 mungkinkosong }
DeklarasiLast : address { address untuk traversal }
DeskripsiAlokasi (P) If (P ≠ Nil) then
Info(P) ←EInsertLast@(L,P)
![Page 60: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/60.jpg)
Halaman 60
IV.3. Penghapusan sebuah elemen pada list linier
Penghapusan harus dijabarkan lebih rinci, Karenapenghapusan elemen dapat merupakanpertama, setelah sebuah address P ataupenghapusan elemen terakhir. Perbedaan inimelehirkan 3 operasi dasar penghapusanelemen list yang diturunkan dari definisifungsional inimenjadi realisasi algoritma.
Operasi penghapusan dapat mengakibatkan list kosong, jika list semula hanya terdiri dari satuelemen.
![Page 61: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/61.jpg)
Halaman 61
IV.3.1. DELETFirst : menghapus elemen pertamalist linier
a. Elemen yang dihapus dicatat alamatnyaProcedure 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 adalah @ elemen pertama L sebelumpenghapusan, L yang baru adalah Next (L)
DeklarasiDeskripsi
P ← First (L) First (L) ← Next ( First (L) )
![Page 62: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/62.jpg)
Halaman 62
Procedure DeleteFirst (Input/Output L : List, Output E : InfoType)
{K. Awal : List L tidak kosong, minimal 1 elemenpertama pasti ada }
{K. Akhir : menghapus elemen pertama LE adalah Nilai elemen pertama L sebelumpenghapusan, L yang baru adalah Next (L)
DeklarasiDeskripsi
P ← First (L) E ← Info (P)First (L) ← Next ( First (L) ) Dealokasi (P)
![Page 63: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/63.jpg)
Halaman 63
IV. 3.2. 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 terakhirK. Akhir : Menghapus suksesor Prec, P adalah @
suksesor Prec sebelum penghapusan, Next (Prec) yang baru adalah suksesor darisuksesor Prec sebelum penghapusan }
DeklarasiDeskripsi
P ← Next (Prec)Next (Prec) ← Next (Next (Prec))
![Page 64: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/64.jpg)
Halaman 64
Dengan primitip ini, maka penghapusan sebuahberalamat P dapat dilakukan dengan : mencaripredesesor dari P, yaitu alamat Prec memakaiDeleteAfter (Prec)
Procedure DeleteP ( Input/Output L ; List, OutputP : 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
![Page 65: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/65.jpg)
Halaman 65
{ Cari predesesor P }if (P = First (L) then {Delete list dengan
satu elemen }DeleteFirst (L,P)
elsePrec ← First (L) While (Next(Prec) ≠ P ) do
Prec ← Next (Prec)endwhile { Next (Prec) = P , hapus P }DeleteAfter (Prec , P)
endif
![Page 66: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/66.jpg)
Halaman 66
IV. 3.3. DELETELast :Menghapus elemen terakhir list dapat dilakukan jika
alamat dari elemen sebelum elemen terakhirdiketahui. Persoalan selanjutnya menjadi persoalanDeleteAfter, kalau last bukan satu- satunya elemenlist linier. Ada dua kasus, yaitu list menjadi kosongatau tidak.
Procedure DeleteLast (Input L : List, Output P : address)
{K. Awal : List L tidak kosong, minimal mengandung1 elemen
K. Akhir : menghapus elemen terakhir dari list, list mungkin menjadi kosong
Proses : P adalah alamat elemen terakhir list sebelum penghapusan }
![Page 67: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/67.jpg)
Halaman 67
DeklarasiLast , 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 sampai @ terakhir}
Preclast ← Last ; Last ← Next ( last )endwhile { Next ( Last ) = Nil, Last adalah elemen terakhir;
preclast = sebelum last } P ← LastIf Preclast = Nil then { list dg 1 elemen, jadi kosong }
First(L) ← Nil Else
Next ( preclast )← Nil endif
![Page 68: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/68.jpg)
Halaman 68
IV. 5. Konkatenasi dua buah list linierConcat adalah menggabungkan dua list. Dalam contoh
berikut list kedua disambungkan ke list pertama. JadiLast (L1) menjadi predesesor First (L2). Realisasialgoritma 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 dibelakangL1 }
![Page 69: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/69.jpg)
Halaman 69
DeklarasiLast1 : address { alamat elemen terakhir list pertama }
DeskripsiCratelist (L3) {inisialisasi list hasil }If Fist (L1) = Nil then
First (L3) ← First (L2)Else { 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)}endif
![Page 70: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/70.jpg)
Halaman 70
Bagian Deklarasi dari algoritma pada List Linier :Deklarasi
type InfoType = … {Sebuah type terdefinisi}type Address pointer to ElmtLtype ElmtL = record
<Info : InfoType,Next : Address >
type List = record <First : Address >{Deklarasi Nama Peubah}
L : ListP : Address
![Page 71: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/71.jpg)
Halaman 71
SoalSoal--SoalSoal LatihanLatihanI. Apakah perbedaan struktur data list linier
ditinjau dari sudut pandang operasinya, jikadibandingkan dengan struktur data stack dan queue?
II. Untuk data yang bagaimanakah yang dapatdirepresentasikan dengan menggunakanstruktur data list linier?
III. Diketahui sebuah list linier dengan elemenbertipe integer, buatlah :1. Sebuah prosedur untuk menghitung
jumlah elemen list yang genap2. Prosedur untuk menghitung rata-rata
elemen list yang ganjil
![Page 72: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/72.jpg)
Halaman 72
3. Prosedur untuk menghitung banyaknyaelemen list yang positif (lebih besar darinol)
4. Prosedur untuk mencetak elemen list yang genap
IV. Diketahui sebuah list dengan elemen bertypeinteger terurut membesar, buatlah :
1. Fungsi untuk mengirimkan elemen pertamalist
2. Fungsi untuk mencari elemen list yang minimum
3. Fungsi untuk menghitung banyaknyaelemen yang lebih besar dari 100
![Page 73: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/73.jpg)
Halaman 73
![Page 74: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/74.jpg)
Halaman 74
5. Stack (5. Stack (TumpukanTumpukan))5.1. DefinisiSTACK (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
![Page 75: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/75.jpg)
Halaman 75
Karena aturan penyisipan dan penghapusan semacamitu, TOP adalah satu-satunya alamat tempat terjadioperasi. Elemen yang ditambahkan paling akhir akanmenjadi elemen yang akan dihapus.Dikatakanbahwa elemen Stack akan tersusun secara LIFO
(Last In First Out).Maka secara lojik, sebuah STACK dapat
digambarkan sebagai list linier yang setiapelemennya adalah
Type ElmtS = record<Info : InfoType,
Next : address >
![Page 76: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/76.jpg)
Halaman 76
dengan InfoType terdefinisi yang menentukaninformasi yang disimpan pada setiapelemen stack, dan address adalah“alamat” dari elemen
Selain itu alamat elemen terbaru (TOP) dicatat, sedangkan alamat elemen yang paling “bawah”, yaitu yang paling lama biasanyadiebut BOTTOM.
TOP adalah elemen pertama list, supayapenambahan dan penghapusan denganmudah dan efisien dapat dilakukan.
![Page 77: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/77.jpg)
Halaman 77
Sehingga jika S adalah sebuah Stack, dan P adalah address makaTop (S) adalah alamat elemen TOP, dimanaoperasi penyisipan/penghapusan dilakukan.Info (P) adalah informasi yang disimpan padaalamat PNext (P) adalah alamat suksesor PElmtS (P) adalah sebuah elemen stack yang beralamat P Stack kosong adalah Stack dengan Top (S) = Nil ( tidak terdefinisi )
![Page 78: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/78.jpg)
Halaman 78
Bagian Deklarasi dari algoritma pada Stack :Deklarasi
type InfoType = … {Sebuah type terdefinisi}type Address pointer to ElmtStype ElmtS = record
<Info : InfoType,Next : Address >
type Stack = record <TOP : Address>{Deklarasi Nama Peubah}
S : StackP : Address
![Page 79: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/79.jpg)
Halaman 79
Pada stack, jarang sekali dilakukantraversal, karena keunikan Stack justrupada operasi yang hanya menyangkutelemen TOP. Namun dibutuhkantraversal misalnya untuk mencetak isiStack.
5.3. Search pada StackPada stack, elemen yang diproses hanyalah
elemen pada TOP. Maka hampir tidak pernahdilakukan search.
5.2. Traversal 5.2. Traversal padapada StackStack
![Page 80: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/80.jpg)
Halaman 80
5.4. 5.4. OperasiOperasi dandan fungsifungsi dasardasarpadapada STACK.STACK.
a. Test STACK kosongMengetahui bahwa stack kosong atautidak sangat penting, sebab semua operasiakan dilakukan berdasarkan kosong atautidaknya suatu Stack. Realisasi algoritmadari definisi fungsional ini adalah sebuahfungsi yang melakukan test terhadap Stack sebagai berikut :
![Page 81: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/81.jpg)
Halaman 81
function StackEmpty (S : STACK) →Boolean
{ TEST stack kosong : Mengirim true, jikatumpukan kosong, false jika tumpukan tidakkosong}
Deklarasi
Deskripsireturn (Top (S) = Nil)
![Page 82: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/82.jpg)
Halaman 82
b. Pembuatan STACK kosongMembuat Stack kosong diperlukan untuk memulaimemakai stack. Realisasi algoritma dari definisifungsional 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
terdefinisiProses : Membuat stack kosong }
DeklarasiDeskripsi
Top (S) ← Nil
![Page 83: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/83.jpg)
Halaman 83
c.Penambahan sebuah elemen padaSTACK (Push)Penambahan selalu dilakukan pada TOP, dankarena alamat TOP diketahui maka prosesnyasederhana. Berikut ini akan diberikan skemaprosedur penyisipan tersebut. Realisasi algoritmadari definisi fungsional ini adalah salah satu daridua buah prosedur yang melakukan penambahanelemen stack sebagai berikut. Prosedur pertamamenambahkan suatu ElmtS yang diketahuialamatnya dan yang kedua menambahkan suatunilai ElmtS yang diberikan.
![Page 84: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/84.jpg)
Halaman 84
procedure Push@ (Input/Output S : STACK Input P : address)
{Menambahkan sebuah elemen baru pada TOP sebuahstack, dengan elemen yang diketahui alamatnya}
{K.Awal : Stack mungkin kosong, P terdefinisi (berartiterdefinisi informasinya, Next (P) = Nil}
{K.Akhir : Top (S) adalah P}DeklarasiDeskripsi
{ insert sebagai elemen pertama }Next (P) ← TOP (S)TOP (S) ← P
![Page 85: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/85.jpg)
Halaman 85
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 : addressDeskripsi
Alokasi ( P ) { alokasi selau berhasil }Info(P) ← E { insert sebagai elemen pertama }Next(P) ← TOP(S) TOP(S) ← P
![Page 86: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/86.jpg)
Halaman 86
d. Penghapusan sebuah elemen padaSTACK (Pop)Penghapusan elemen Stack selalu dilakukan padaTOP , hanya saja harus diperhitungkan bahwamugkin Stack akan menjadi kosong akibatterjadinya penghapusan. Jika Stack menjadikosong , maka harga TOP harus diganti . Realisasialgoritma dari definisi funsional ini adalah salahsatu dari dua buah prosedur yang melakukanpengambilan elemen stack sebagai berikut . Prosedur pertama mengambil suatu Elmts denganmenyimpan alamatnya dan yang kedua mengambilnilai , dan membebaskan alamat ( dealokasi ) yang tadinya dipakai
![Page 87: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/87.jpg)
Halaman 87
procedure PopStack@(Input/Output S : STACK Output P : address)
{K.Awal : Stack tidak kosongK.Akhir : Alamat elemen Top (S) disimpan pada
P, sehingga informasinya dapat diaksesmelalui P
Proses : Menghapus elemen stack, stack tidak bolehkosong dan mungkin menjadi kosong }
DeklarasiDeskripsi
P ← TOP (S)TOP (S) ← Next(TOP(S))
![Page 88: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/88.jpg)
Halaman 88
procedure PopStack(Input/Output S : STACK Output E : InfoType)
{K.Awal : Stack tidak kosongK.Akhir : Alamat elemen Top (S) disimpan pada
E, alamat TOP yang lama didealokasiProses : Menghapus elemen stack, stack tidak boleh
kosong dan mungkin menjadi kosong }Deklarasi
P : addressDeskripsi
P ← TOP (S)E ← Info(P)TOP (S) ← Next(TOP(S))Dealokasi (P)
![Page 89: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/89.jpg)
Halaman 89
SoalSoal--SoalSoal LatihanLatihan1. Mengapa cara penyusunan elemen pada
Stack sering disebut tersusun secaraLIFO?
2. Mengapa pada Stack Traversal dan Search jarang dilakukan?
3. Penghapusan elemen pada Stack selaludilakukan pada elemen yang paling atas, bagaimana jika terpaksa harus menghapuselemen yang paling bawah?
![Page 90: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/90.jpg)
Halaman 90
4. Buatlah sebuah fungsi untuk menghitung jumlahelemen stack yang genap, jika diketahui sebuahstack dengan elemen bertype integer.
5. Buatlah fungsi/prosedur untuk mencetak elemenstack yang ganjil
6. Buatlah juga fungsi untuk menghitung rata-rata elemen Stack yang genap
7. Buatlah sebuah fungsi untuk mengirimkanelemen pertama Stack
8. Buatlah sebuah fungsi untuk mengirimkanelemen Stack yang maksimum jika diketahuielemen Stack terurut mengecil bertype integer
![Page 91: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/91.jpg)
Halaman 91
![Page 92: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/92.jpg)
Halaman 92
6. Queue (6. Queue (AntrianAntrian))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 elementerakhir
- Penghapusan selalu dilakukan pada elemenpertama
3. Satu elemen dengan elemen lain dapat diaksesmelalui informasi Next
![Page 93: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/93.jpg)
Halaman 93
Struktur data ini banyak dipakai dalaminformatika misalnya untuk merepresentasi :1. Antrian job dalam sistem operasi2. Antrian dalam dunia nyata
Maka secara lojik, sebuah Queue dapatdigambarkan sebagai list linier yang setiapelemennya adalah :Type ElmtQ = record
<Info : InfoType, Next : address >
![Page 94: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/94.jpg)
Halaman 94
dengan InfoType terdefinisi yang menentukaninformasi yang disimpan pada setiap elemenqueue, dan address adalah “alamat” darielemen
Selain itu alamat elemen Pertama (Head) danelemen terakhir (Tail) dicatat.
Maka jika Q adalah Queue dan P adalah Address, penulisan untuk Queue adalah :Head(Q)Tail(Q)Next(P)Info(P)
![Page 95: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/95.jpg)
Halaman 95
Bagian Deklarasi dari algoritma pada Queue :Deklarasi
type InfoType = … {Sebuah type terdefinisi}type Address pointer to ElmtQtype ElmtQ = record
<Info : InfoType,Next : Address >
type Queue = record <Head : Address, Tail : Address>
{Deklarasi Nama Peubah}Q : QueueP : Address
![Page 96: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/96.jpg)
Halaman 96
Pada queue, jarang sekali dilakukantraversal, karena keunikan Queue justrupada operasi yang hanya menyangkutelemen pertama dan terakhir. Namundibutuhkan traversal misalnya untukmencetak isi Antrian.
6.3. Search pada QueuePada Queue, elemen yang diproses hanyalah
elemen pada pertama dan terakhir. Makahampir tidak pernah dilakukan search.
6.2. Traversal 6.2. Traversal padapada QueueQueue
![Page 97: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/97.jpg)
Halaman 97
6.4. 6.4. OperasiOperasi dandan fungsifungsi dasardasarpadapada Queue.Queue.
a. Test Queue kosongMengetahui bahwa Queue kosong atau tidaksangat penting, sebab semua operasi akandilakukan berdasarkan kosong atau tidaknyasuatu Queue. Realisasi algoritma dari definisifungsional ini adalah sebuah fungsi yang melakukan test terhadap Queue sebagaiberikut :
![Page 98: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/98.jpg)
Halaman 98
function IsQEmpty (Q : Queue) → Boolean{ TEST Queue kosong : Mengirim true, jika
antrian kosong, false jika antrian tidakkosong}
DeklarasiDeskripsi
return ((Head(Q) = Nil) and (Tail(Q) = Nil))
![Page 99: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/99.jpg)
Halaman 99
b. Pembuatan Queue kosongMembuat Queue kosong diperlukan untuk memulaimemakai Queue. Realisasi algoritma dari definisifungsional 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 terbentukProses : Membuat queue kosong }
DeklarasiDeskripsi
Head(Q) ← NilTail(Q) ← Nil
![Page 100: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/100.jpg)
Halaman 100
c.Penambahan sebuah elemen padaQueuePenambahan selalu dilakukan pada ekor, dan karena alamat ekor diketahui makaprosesnya sederhana, yaitu hanyaInsertLast.
Berikut ini akan diberikan skema prosedurpenyisipan tersebut.
![Page 101: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/101.jpg)
Halaman 101
Realisasi algoritma dari definisi fungsional iniadalah salah satu dari dua buah proseduryang melakukan penambahan elemenQueue sebagai berikut :
Prosedur pertama menambahkan suatuElemen Queue yang diketahui alamatnyadan yang kedua menambahkan suatu nilaiElemen queue yang diberikan.
![Page 102: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/102.jpg)
Halaman 102
procedure InsertQ@ (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 danTail yang baru adalah P
Proses : Insert sebuah elemen beralamat P pada Tail dari antrian Q }
Deklarasi
![Page 103: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/103.jpg)
Halaman 103
DeskripsiIf IsQEmpty(Q) then
Head(Q) ← PTail(Q) ← P
elseNext(Tail(Q)) ← PTail(Q) ← P
endif
![Page 104: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/104.jpg)
Halaman 104
procedure InsertQ(Input/Output Q : Queue Input E : InfoType)
{K.Awal : Queue mungkin kosong, E terdefinisi
K.Akhir : Elemen Tail dari Q yang barubernilai E
Proses : Insert sebuah elemen nilai padaTail dari antrian Q }
Deklarasi
![Page 105: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/105.jpg)
Halaman 105
DeskripsiAlokasi (P)Info (P) ← EIf IsQEmpty(Q) then
Head(Q) ← PTail(Q) ← P
elseNext(Tail(Q)) ← PTail(Q) ← P
endif
![Page 106: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/106.jpg)
Halaman 106
d. Penghapusan Elemen Pada QueuEPenghapusan elemen pada queue selaludilakukan pada elemen pertama, hanya sajaperlu diperhitungkan bahwa mungkin queue menjadi kosong akibat terjadinyapenghapusan. Jika queue menjadi kosong, maka harga Tail harus diganti. Jika akibatpenghapusan queue tidak kosong, makaelemen terakhir tidak berubah.
![Page 107: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/107.jpg)
Halaman 107
Berikut adalah skema penghapusan tersebut. Prosedur pertama melakukan penghapusanElmtQ yang berada di Head danyang dicatatadalah alamatnya, yaitu P. Prosedur yang kedua menghapus elemen Head dari queue danmenyimpannya pada suatu elmtQ sertamembebaskan alamat yang tadinya dipakaioleh elemen Head tersebut.
![Page 108: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/108.jpg)
Halaman 108
procedure DeleteQ@(Input/Output Q : Queue Output P : address)
{K.Awal : Queue tidak kosongK.Akhir : P bukan lagi elemen dari Q, P ≠ Nil,
Next(P) = NilProses : Menghapus elemen Head dari antrian,
antrian tidak boleh kosong danmungkin menjadi kosong }
DeklarasiDeskripsi
![Page 109: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/109.jpg)
Halaman 109
P ← Head(Q)Head(Q) ← Next(Head(Q))if (Head(Q) = Nil) then
Tail(Q) ← NilendifNext(P) ← Nil
![Page 110: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/110.jpg)
Halaman 110
procedure DeleteQ(Input/Output Q : Queue Output E : InfoType)
{K.Awal : Queue tidak kosongK.Akhir : Jika P adalah Head(Q). P bukan lagi
elemen dari Q, P ≠ Nil, Next(P) = Nil
Proses : Menghapus elemen Head dari antrian, antrian tidak boleh kosong danmungkin menjadi kosong }
DeklarasiDeskripsi
![Page 111: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/111.jpg)
Halaman 111
P ← Head(Q)E ← Info(Head(Q))Head(Q) ← Next(Head(Q))if (Head(Q) = Nil) then
Tail(Q) ← NilendifNext(P) ← NilDealokasi(P)
![Page 112: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/112.jpg)
Halaman 112
SoalSoal--SoalSoal
1. Mengapa cara penyusunan elemen padaQueue Sering disebut tersusun secaraFIFO?
2. Mengapa pada Queue Traversal danSearch jarang dilakukan?
3. Penghapusan elemen pada Queue selaludilakukan pada elemen yang paling depan, bagaimana jika terpaksa harus menghapuselemen yang paling belakang?
![Page 113: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/113.jpg)
Halaman 113
4. Buatlah sebuah fungsi untuk menghitung jumlahelemen queue yang ganjil, jika diketahui sebuahqueue dengan elemen bertype integer.
5. Buatlah fungsi/prosedur untuk mencetak elemenqueue yang genep
6. Buatlah juga fungsi untuk menghitung rata-rata elemen queue yang ganjil
7. Buatlah sebuah fungsi untuk mengirimkan elemenpertama queue
8. Buatlah sebuah fungsi untuk mengirimkan elemenqueue yang maksimum jika diketahui elemen queue terurut membesar dan bertype integer
![Page 114: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/114.jpg)
Halaman 114
![Page 115: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/115.jpg)
Halaman 115
7. 7. PohonPohon (Tree)(Tree)7.1. Definisi Rekurens Dari PohonSebuah pohon adalah himpunan terbatas tidak
kosong, dengan elemen yang dibedakansebagai berikut :
1. Sebuah elemen yang dibedakan dari yang lain yang disebut sebagai AKAR (root) daripohon
2. Elemen yang lain (jika masih ada) dibagi-bagi menjadi beberapa sub himpunan yang disjoint dan masing-masing sub himpunantersebut adalah pohon yang disebut sebagaisub pohon dari pohon tersebut.
![Page 116: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/116.jpg)
Halaman 116
Beberapa Istilah1. Hutan
Hutan adalah sequence (list) dari pohon2. Simpul (Node)
Simpul adalah elemen dari pohon yang memungkinkan akses pada sub pohon dimanasimpul tersebut berfungsi sebagai Akar
3. CabangCabang adalah hubungan antara Akar dengansub pohon
![Page 117: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/117.jpg)
Halaman 117
4. AyahAkar dari sebuah pohon adalah Ayah darisub pohon
5. AnakAnak dari sebuah pohon adalah Sub pohon
6. SaudaraSaudara adalah simpul-simpul yang mempunyai Ayah yang sama
7. DaunDaun adalah simpul terminal dari pohon. Semua simpul selain Daun adalah simpulbukan terminal
![Page 118: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/118.jpg)
Halaman 118
8. Jalan (Path)Jalan adalah suatu urutan tertentu dariCabang
9. DerajatDerajat sebuah pohon adalah banyaknyaanak dari dari pohon tersebut.Jika sebuah simpul berderajat N disebut
pohon N-aire1 disebut pohon 1-aire/uner2 disebut pohon 2-aire/biner
![Page 119: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/119.jpg)
Halaman 119
10. Tingkat (Level)Level pohon adalah panjangnya jalan dariAkar sampai dengan simpul yang bersangkutan. Panjang dari jalan adalahbanyaknya simpul yang dikandung padajalan tersebut. Akar mempunyai tingkat samadengan 1.
Dua buah simpul disebut sebagai Sepupu jikamempunyai tingkat yang sama dalam sebuahpohon.
![Page 120: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/120.jpg)
Halaman 120
11. Kedalaman (Tinggi)Kedalaman (Tinggi) dari pohon adalah nilaimaksimum dari tingkat simpul yang ada padapohon tersebut. Kedalaman adalah panjangmaksimum jalan dari Akar menuju ke sebuahdaun
12. LebarLebar sebuah Pohon adalah maksimumbanyaknya simpul yang ada pada suatuTingkat (Level)
![Page 121: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/121.jpg)
Halaman 121
7.2. Struktur Pohon BinerDefinisiSebuah pohon biner (Binary Tree) adalah
himpunan terbatas yang :Mungkin kosong atauTerdiri dari sebuah simpul yang disebutsebagai Akar dan dua buah himpunan lain yang disjoint yang merupakan pohon bineryang disebut sebagai Sub Pohon Kiri (Left) dan Sub Pohon Kanan (Right) dari pohon binertersebut.
![Page 122: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/122.jpg)
Halaman 122
Pohon biner merupakan tipe yang sangat pentingdari struktur data dan banyak dijumpaidalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwasetiap simpul paling banyak hanyamemiliki dua buah anak, dan mungkintidak punya anak.
Istilah-istilah yang digunakan sama denganistilah pada pohon secara umum.
![Page 123: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/123.jpg)
Halaman 123
Notasi Prefiks, Infiks dan Postfiks1. Notasi Prefiks
Notasi Prefiks ditulis dengan cara mengikutialur sebagai berikut :
![Page 124: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/124.jpg)
Halaman 124
2. Notasi InfiksNotasi ini ditulis dengan cara mengikuti alursebagai berikut :
![Page 125: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/125.jpg)
Halaman 125
3. Notasi PosfiksNotasi ini ditulis dengan cara mengikuti alursebagai berikut :
![Page 126: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/126.jpg)
Halaman 126
Rekonstruksi Algoritma{Deklarasi Type}
Type Infotype = … {terdefinisi}Type node = record <Info : infotype,
Left : address,Right: address >
Type BinTree : address
{Primitif}
![Page 127: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/127.jpg)
Halaman 127
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}
![Page 128: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/128.jpg)
Halaman 128
function IsEmpty(P : BinTree)→boolean{ Test apakah sebuah pohon kosong,
mengirimkan True jika kosong dan False jikatidak}
procedure MakeTree(input Akar : infotype, L : BinTree, R : BinTree, output P : BinTree)
{ K. Awal : sembarangK. Akhir : Terbentuk sebuah pohon binerProses : Menghasilkan sebuah pohon biner
dari Akar, L dan R}
![Page 129: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/129.jpg)
Halaman 129
{Traversal}Procedur PreOrder(input P : BinTree){K. AWAL : P terdefinisiK. AKHIR : Semua simpul P sudah
diproses secara preorder}
Procedure InOrder(input P : BinTree){K. AWAL : P terdefinisiK. AKHIR : Semua simpul P sudah
diproses secara inorder}
![Page 130: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/130.jpg)
Halaman 130
Procedure PostOrder(input P : BinTree){K. AWAL : P terdefinisiK. AKHIR : Semua simpul P sudah
diproses secara postorder}
Procedure PrintTree(input P : BinTree, h : integer){K. AWAL : P terdefinisi, h adalah jarak indentasiK. AKHIR : Semua simpul P sudah ditulis dengan
indentasi}
![Page 131: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/131.jpg)
Halaman 131
{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}
![Page 132: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/132.jpg)
Halaman 132
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 hanyamempunyai sub pohon kiri}
function IsUnerRight(P : BinTree) →boolean{ Mengirimkan True jika pohon biner tidak
kosong P adalah pohon unerright yaitu hanyamempunyai sub pohon kanan}
![Page 133: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/133.jpg)
Halaman 133
function IsBin(P : BinTree)→boolean{ Mengirimkan True jika pohon biner tidak
kosong P adalah pohon biner yaitu mempunyaisub 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}
![Page 134: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/134.jpg)
Halaman 134
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}
![Page 135: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/135.jpg)
Halaman 135
Procedure AddDaunTerkiri(input/output P:BinTree, input X: infotype)
{K. AWAL : P boleh kosongK. 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 PK. AKHIR : P bertambah simpulnya, dengan Y
adalah anak kiri X (jika kiri) atausebagai anak kanan X (jika not kiri)}
![Page 136: Bahan Kuliah Struktur Data](https://reader034.fdocuments.in/reader034/viewer/2022052523/5571f2dd49795947648d2d6f/html5/thumbnails/136.jpg)
Halaman 136
Procedure DelDaunTerkiri(input/outputP:BinTree, output X: infotype)
{K. AWAL : P tidak kosongK. AKHIR: P dihapus daun terkirinya dan
didealokasi, dengan X adalah info yang semula disimpan pada daunterkiri yang dihapus}
Procedure DelDaun(input/output P:BinTree, output X: infotype)
{K. AWAL : P tidak kosong, X adalah salah satudaun
K. AKHIR : X dihapus dari P}