17123192 bahan kuliah struktur data
TRANSCRIPT
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 1/136
Halaman 1
STRUKTUR DATASTRUKTUR DATA
Pengajar Pengajar JaidanJaidan JauhariJauhari, MT, MT
AlamatAlamat EmailEmail
[email protected] [email protected]
[email protected] [email protected]
DisarikanDisarikan DariDari BerbagaiBerbagai Sumber Sumber ,, TerutamaTerutama Dari DiktatDari Diktat Struktur Struktur DataData InformatikaInformatika
ITBITB KaranganKarangan Dr.Dr. InggrianiInggriani LiemLiem
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 2/136
Halaman 2
SILABUS MATERI KULIAHSILABUS MATERI KULIAH
Pengantar Struktur Data
Review Record dan Array
Stack (Tumpukan)
Queue (Antrian)
Linked List dan Variasi List MultiList
Pohon Biner
Graph
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 3/136
Halaman 3
BUKU SUMBERBUKU SUMBER
1. Inggriani Liem. 1997. Diktat Kuliah Algoritma dan Pemrograman Prosedural . Bandung : ITB
2. Inggriani Liem. 2003. Diktat Kuliah Struktur Data.
Bandung : ITB3. Rinaldi Munir. 2003. Algoritma dan Pemrograman II.
Bandung : Penerbit Informatika
4. Bambang Wahyudi. 2004. Struktur Data dan Algoritma.Yogyakarta : Andi Offset
5. Dwi Sanjaya. 2001. Bertualang dengan Struktur Data di Planet Pascal . Yogyakarta : JJ Learning
6. P. Insap Santoso.1997. Struktur Data dengan Turbo Pascal . Yogyakarta : Andi Offset
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 4/136
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%
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 5/136
Halaman 5
AturanAturan dandan SanksiSanksi--sanksisanksi Kehadiran minimal 80%, kurang dari 80%
tidak lulus (mendapat nilai E) Keterlambatan maksimal 10 menit (Lebih dari 10 menit tidak
diijinkan memasuki ruangan)
Pengumpulan Tugas yang melebihi waktu yang telah ditentukanakan diberikan nilai nol
Kecurangan dalam bentuk apapun akan mendapatkan nilai E
Mahasiswa berpakaian rapi dan sopan, yang ditunjukkan antara lain
1. Memakai sepatu tertutup2. Memakai baju berkerah
3. Tidak memakai aksesoris yang tidak diijinkan
4. Tidak memakai pakaian yang kurang dasar atau lebih dasar
5. dan lain-lain Selama perkuliahan berlangsung mahasiswa tidak diijinkan
meninggalkan ruang kuliah kecuali sangat terpaksa dan itupunharus membuat surat ijin dan hanya boleh satu kali
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 6/136
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 dunia
nyata.
Fakta atau keterangan tentang kenyataan yangdisimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atausimbol
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 7/136
Halaman 7
Secara garis besar type data dapat dikategorikan
menjadi :1. Type data sederhana
a. Type data sederhana tunggal, misalnya
Integer, real, boolean dan karakter
b. Type data sederhana majemuk, misalnya
String
2. Struktur Data, meliputi
a. Struktur data sederhana, misalnya array danrecord
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 8/136
Halaman 8
b. Struktur data majemuk, yang terdiri
dariLinier : Stack, Queue, serta List dan
Multilist
Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan
algoritma yang lebih jelas dan tepat,sehingga menjadikan program secarakeseluruhan lebih efisien dan sederhana.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 9/136
Halaman 9
Struktur data yang ″standar ″ yang biasanyadigunakan dibidang informatika adalah :
List linier (Linked List) dan variasinya
Multilist
Stack (Tumpukan)
Queue (Antrian)
Tree ( Pohon )
Graph ( Graf )
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 10/136
Halaman 10
REVIEW RECORD (REKAMAN)REVIEW RECORD (REKAMAN)
Disusun oleh satu atau lebih field. Tiap fieldmenyimpan data dari tipe dasar tertentu atau dari
tipe bentukan lain yang sudah didefinisikansebelumnya. Nama rekaman ditentukan oleh pemrogram.
Rekaman disebut juga tipe terstruktur .
Contoh :
1. type Titik : record <x : real, y : real> jika P dideklarasikan sebagai Titik makamengacu field pada P adalah P.x dan P.y.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 11/136
Halaman 11
2. Didefinisikan tipe terstruktur yang mewakili Jam
yang dinyatakan sebagai jam (hh), menit (mm)dan detik (ss), maka cara menulis type Jamadalah :
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
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 12/136
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;
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 13/136
Halaman 13
REVIEW ARRAY (LARIK)REVIEW ARRAY (LARIK)1. Pendahuluan
Larik adalah struktur data statik yang
menyimpan sekumpulan elemen yang bertipe
sama. Setiap elemen diakses langsung melalui
indeksnya.
Indeks larik harus tipe data yang menyatakanketerurutan misalnya integer atau karakter.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 14/136
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
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 15/136
Halaman 15
Cara Pendefinisian Array
1. Sebagai Peubah
Contoh :
L : array[1..50] of integer
NamaMhs : array[‘a’..’j’] of string
2. Sebagai tipe baru
Contoh :
type LarikInt : array[1..100] of integer
P : LarikInt
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 16/136
Halaman 16
3. Mendefinisikan ukuran maksimum
elemen larik sebagai konstantaContoh :
Const Nmaks = 100type Larikint : array[1..Nmaks] of integer
P : LarikInt
Cara menterjemahkan ke bahasa C :
#define Nmaks 100
typedef int Larikint[Nmaks+1];
Larikint P;
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 17/136
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 }
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 18/136
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 : integer
Deskripsi :
for k 1 to N do
A[k] 0endfor
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 19/136
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 yangdibaca dari piranti masukan}
{K. Awal : N adalah jumlah elemen efektif larik, nilainyaterdefinisi}
{K. Akhir : seluruh elemen larik A berisi nilai-nilai yang dibaca dari
piranti masukan}Deklarasi :
K : integer
Deskripsi :
for k 1 to N doread (A[k])
endfor
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 20/136
Halaman 20
Larik Bertype Terstruktur
Larik tidak hanya dapat berisi data bertype tunggal,tapi dapat juga berisi data yang bertipeterstruktur
Contoh :
const Nmaks = 100
type Mahasiswa : record
<nim : integer,
nama_mhs : string,
KodeMK : string, Nilai : char >
TabMhs : array[1..Nmaks] of Mahasiswa
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 21/136
Halaman 21
Contoh Cara mengacu elemen TabMhs :
1. TabMhs[2].Nimmengacu field Nim dari elemen kedua
larik 2. Write(TabMhs[k].KodeMK)
menuliskan field KodeMK dari elemenke k dari larik
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 22/136
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, Nama Nasabah, Alamat Nasabah, Kota Nasabah, dan
Nomor Telpon Nasabah.
Untuk setiap field definisikan type data yang cocok
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 23/136
Halaman 23
2.Dari soal nomor 1 buatlah program dalam bahasa pemrograman berbasis bahasa C, untuk
memasukkan data nasabah sebanyak N, dengan N diinput kan dari papan ketik, kemudianmenuliskan kembali semua data nasabah dalam
bentuk matrik.Petunjuk :
Gunakan notasi pengulangan untuk menyelesaikan permasalahan tersebut
Tugas dikumpulkan pada pertemuan berikutnya disertai listing program dancontoh keluarannya
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 24/136
Halaman 24
ADT (Abstract Data Type)ADT (Abstract Data Type)
ADT adalah definisi type dan sekumpulan
primitif (operasi dasar) terhadap type
tersebut.
Type diterjemahkan menjadi type terdefinisi
dalam bahasa pemrograman yang bersangkutan, misalnya menjadi record dalam
Pascal/Ada dan Struct dalam bahasa C
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 25/136
Halaman 25
Primitif dalam konteks pemrograman
prosedural, 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 dengan
Get.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 26/136
Halaman 26
3. Prosedur Pengubah nilai komponen
4. Validator komponen type, yangdipakai untuk mengetes apakah dapat
membentuk type sesuai batasan.5. Destruktor/Dealokator , yaitu untuk
menghancurkan nilai objek, sekaligusmemori penyimpannya
6. Baca/tulis, untuk interface denganinput/output device
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 27/136
Halaman 27
7. Operator Relasional terhadap type
tersebut untuk mendefinisikan lebih
besar, lebih kecil, sama dengan dan
sebagainya.
8. Aritmatika terhadap type tersebut,
dalam pemrograman biasanya hanya
terdefinisi untuk bilangan numerik.
9. Konversi dari type tersebut ke typedasar dan sebaliknya
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 28/136
Halaman 28
ADT biasanya diimplementasi menjadi dua buah
modul, yaitu :
1. Definisi/spesifikasi type dan primitif - Spesifikasi type sesuai dengan
bahasa yang dipakai
- Spesifikasi dari primitif sesuai dengan kaidahdalam konteks prosedural, yaitu :
a. Fungsi : nama, domain, range, dan pre kondisi jika ada
b. Prosedur : Keadaan Awal, Keadaan Akhir dan proses yang dilakukan
2. Body/realisasi dari primitif , berupa kode program dalam bahasa yang bersangkutan. Realisasi fungsi dan prosedur harus sedapat mungkin memanfaatkan Selektor danKonstruktor
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 29/136
Halaman 29
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 30/136
Halaman 30
4. Linked List (List Linier)4. Linked List (List Linier)
4.1. Definisi
List linier adalah sekumpulan elemen
bertype sama, yang mempunyaiketerurutan tertentu, yang setiap
elemennya terdiri dari 2 bagian :
Type Elmtlist = record< Info : InfoType,
Next : address >
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 31/136
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 Firstadalah alamt elemen pertama list, maka
elemen berikutnya dapat diakses secara
suksesif dari elemen pertama tersebut
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 32/136
Halaman 32
Jadi, sebuah list linier dikenali :
elemen pertamanya, biasanya melalui alamatelemen pertama yang disebut : First
alamat elemen berikutnya ( suksesor ), jika
kita mengetahui alamat sebuah elemen , yangdapat diakses melalui field NEXT
setiap elemen mempunyai alamat, yaitu
tempat elemen disimpan dapat diacu.Untuk mengacu sebuah elemen , alamat harusterdefenisi . Dengan alamat tersebut Informasi
yang tersimpan pada elemen list dapat diakses.
elemen terakhirnya. Ada berbagai cara untuk mengenali elemen akhir
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 33/136
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 dikonsultasi
informasinya dengan notasi :
Info(P)
Next(P)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 34/136
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
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 35/136
Halaman 35
II. Skema traversal untuk list
linier
List terdiri dari sekumpulan elemen.
Seringkali diperlukan untuk memproses
setiap elemen list dengan cara yang sama.
Karena itu salah primitif operasi konsultasidasar pada struktur list adalah traversal,
yaitu “mengunjungi” setiap elemen listuntuk diproses.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 36/136
Halaman 36
Karena Urutan akses adalah dari elemen pertama sampai dengan elemen
terakhir, maka traversal list secaranatural dilakukan dari elemen pertama,
suksesornya, dan seterusnya sampaidengan elemen terakhir.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 37/136
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
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 38/136
Halaman 38
Deklarasi :
P : address { address untuk traversal , typeterdefenisi }
Deskripsi :
InisialisasiP← First ( L ) { First Element }
While ( P ≠Nil ) doProses ( P )
P←
Next ( P ) { Next element }endwhile
Terminasi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 39/136
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 :
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 40/136
Halaman 40
DeklarasiP : address { address untuk traversal , type
terdefenisi }
Deskripsi
If (First ( L ) = Nil) then
Write ( ‘List kosong ‘ )
else
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 41/136
Halaman 41
Insialisasi
P← First ( L ) { First Element }
Repeat
Proses ( P )
P← Next ( P ) { Next element }
until P=Nil
Terminasi
III Sk S i l S h k li
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 42/136
Halaman 42
III. Skema Sequential Search untuk listlinier
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 address
Search ini sering dipakai untuk mengenali
suatu elemen list berdasarkan nilai informasiyang disimpan pada elemen yang dicari.Biasanya dengan alamat yang ditemukan,
akan dilakukan suatu proses terhadap elemenlist tersebut.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 43/136
Halaman 43
Procedure SKEMAList Search1 ( Input L : List,
X : InfoType, Output P :address, Found: Boolean )
{ K. Awal : List linier L sudah terdefinisi dan siap
dikonsultasi, X terdefenisi }
{ K.Akhir : P : address pada pencarian beurutan,
dimana X diketemukan, P = Nil jikatidak ketemu, Found berharga true jika
harga X yang dicari ketemu, false jikatidak }
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 44/136
Halaman 44
{Proses : Sequential Search harga X pada sebuah
list linier L, Semua elemen diperiksadengan intruksi yang sama, versi
dengan Boolean}
Deklarasi
Deskripsi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 45/136
Halaman 45
P← First ( L )
Found←
falseWhile ( P ≠ Nil ) and ( not found ) do
if X = Info (P) then
Found←True
else
P← Next (P)endif
endwhile { P = Nil or Found}{Jika Found maka P adalah address dimana
harga yang dicari diketemukan}
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 46/136
Halaman 46
III. 2. Search suatu Elemen yang
beralamat tertentuProcedure SKEMAList Search@ ( Input L : List, P :
address, Found: Boolean )
{K. Awal : List linier L sudah terdefinisi dan siap
dikonsultasi, X terdefenisi }
{K.Akhir : Jika ada elemen list beralamat P, Found berharga true, Jika tidak ada elemen list
beralamat P, Found berharga false }
{Proses : Sequential Search @ P pada sebuah list linier
L, Semua elemen diperiksa dengan intruksi
yang sama }
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 47/136
Halaman 47
Deklarasi
Pt : address
Deskripsi
Pt ← First ( L )
Found ← false
While ( Pt ≠ Nil ) and ( not found ) do
if Pt = P then
Found ← trueelse
Pt ← Next (Pt)
endif endwhile { Pt = Nil or Found}
{ Jika Found maka P adalah elemen list}
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 48/136
Halaman 48
IV. Definisi fungsional list linier dan
algoritmanyaSecara fungsional, pada sebuah list linier biasanya dilakukan pembuatan,
penambahan atau penghapusan elemen yangdapat ditulis sebagai berkut :
Jika diberikan L, L1 dan L2 adalah listlinier dengan elemen ElmtList, makaoperasi yang dapat dilakukan :
ListEmpty, CreateList, Insert,Delete, Concat dan UpdateList
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 49/136
Halaman 49
IV. 1. Pengetesan List Kosong
Pemeriksaan apakah sebuah list kosong sangat penting, karena Keadaan Awal dan
Keadaan Akhir beberapa prosedur harusdidefinisikan berdasarkan keadaan list.
Operasi pada list kosong sering kali
membutuhkan penanganan khususRealisasi algoritmik dari definisi
fungsional ini adalah sebuah fungsisebagai berikut.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 50/136
Halaman 50
Function IsEmptyList (L : List )→ boolean
{ Test apakah sebuah list L kosong,Mengirimkan true jika list kosong, false
jika tidak kosong}Deklarasi
Deskripsi
return(First (L) = Nil)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 51/136
Halaman 51
IV.2 Pembuatan sebuah elemen pada
list linierPembuatan sebuah list berarti membuat
sebuat list KOSONG, yang selanjutnyasiap diproses (ditambah elemennya,
dsb). Realisasi algoritmik daridefenisi funfsional ini adalah sebuah
prosedur sebagai berikut.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 52/136
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
IV 3 P i i b h l
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 53/136
Halaman 53
IV. 3 Penyisipan sebuah elemen
pada list linierFungsi insert (penyisipan) harus dijabarkan lebih
rinci, karena dapat menjadi penyisipan sebagai
elemen pertama, setelah sebuah address P atau penyisipan menjadi elemen terakhir atau
bahkan menjadi elemen ditengahPenyisipan sebuah elemen dapat dilakukanterhadap sebuah elemen yang sudah dialokasi
(diketahui address-nya ), atau sebuah elemenyang hanya diketahui nilai Info-nya (berarti
belum dialokasi).
IV 2 1 INSERT First (Address)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 54/136
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}
Deklarasi
Deskripsi Next (P)← First (L)
First (L) ← P
IV 2 2 INSERT Fi t (Nil i)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 55/136
Halaman 55
IV.2.2 INSERT-First (Nilai)
Menambahkan sebuah elemen yang diketahui nilainya sebagai elemen pertamalist.
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}
DeklarasiP : address
Deskripsi
Alokasi (P)If P ≠ Nil then
Info (P) ← E
Next (P) ← First (L)
First (L) ← P
IV 2 2 INSERT AFTER
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 56/136
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) = Nil
K. Akhir : P menjadi suksesor PrecProses : Insert sebuah elemen beralamat P pada List
linier L}
DeklarasiDeskripsi
Next (P) ← Next (Prec)
Next (Prec) ← P
IV 2 3 INSERT L t
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 57/136
Halaman 57
IV. 2.3. INSERT – Last
Menyisipkan sebuah elemen beralamat P sebagai elemen
terakhir sebuah list linier. Ada dua kemungkinan list
kosong atau tidak kosong
Procedur InsertLast@(Input/Output L: List, Input P :
address)
{K. Awal : List L mungkin kosong, P sudah dialokasi,
P ≠ Nil, Next (P) = Nil
K. Akhir : P adalah elemen terakhir list LProses : Insert sebuah elemen beralamat P sbg elemen
terakhir dari list linier L yg mungkin kosong }
Deklarasi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 58/136
Halaman 58
Deklarasi
Last : 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
Procedure InsertLast(Input/output L :List Input E : Infotype)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 59/136
Halaman 59
Procedure InsertLast(Input/output L :List, Input E : Infotype)
{ K. Awal : List L mungkin kosong, P sudah dialokasi,
P ≠ Nil, Next(P)=NilK. Akhir : P adalah elemen terakhir list L
Proses : Insert sebuah elemen beralamat P sebagaielemen terakhir dari list linier L yang mungkin
kosong }Deklarasi
Last : address { address untuk traversal }
DeskripsiAlokasi (P)
If (P ≠ Nil) thenInfo(P) ←E
InsertLast@(L,P)
IV 3 Penghapusan sebuah elemen pada list
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 60/136
Halaman 60
IV.3. Penghapusan sebuah elemen pada listlinier
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 definisi
fungsional inimenjadi realisasi algoritma.
Operasi penghapusan dapat mengakibatkan listkosong, jika list semula hanya terdiri dari satuelemen.
IV 3 1 DELETFirst : menghapus elemen pertama
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 61/136
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 sebelum penghapusan, L yang baru adalah Next (L)
Deklarasi
DeskripsiP ← First (L)
First (L) ← Next ( First (L) )
Procedure DeleteFirst (Input/Output L : List Output E :
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 62/136
Halaman 62
Procedure DeleteFirst (Input/Output L : List, Output E :InfoType)
{K. Awal : List L tidak kosong, minimal 1 elemen pertama pasti ada }
{K. Akhir : menghapus elemen pertama L
E adalah Nilai elemen pertama L sebelum penghapusan, L yang baru adalah Next (L)
Deklarasi
DeskripsiP ← First (L)
E← Info (P)
First (L) ← Next ( First (L) )
Dealokasi (P)
IV 3 2 Delete After :
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 63/136
Halaman 63
IV. 3.2. Delete After :
Penghapusan suksesor sebuah elemen :
Procedure DeleteAfter ( Input Prec : adrress, OutputP : address )
{ K. Awal : List tidak kosong, Prec adalah elemen list
, Next (Prec) ≠ Nil } Prec ≠elemen terakhir K. Akhir : Menghapus suksesor Prec, P adalah @
suksesor Prec sebelum penghapusan, Next
(Prec) yang baru adalah suksesor darisuksesor Prec sebelum penghapusan }
Deklarasi
DeskripsiP ← Next (Prec)
Next (Prec) ← Next (Next (Prec))
Dengan primitip ini maka penghapusan sebuah
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 64/136
Halaman 64
Dengan primitip ini, maka penghapusan sebuah beralamat P dapat dilakukan dengan : mencari
predesesor dari P, yaitu alamat Prec memakaiDeleteAfter (Prec)
Procedure DeleteP ( Input/Output L ; List, OutputP : address )
{ K. Awal : List L tidak kosong , P adalah elemen listL K. Akhir : Menghapus P dari list, P mungkin
elemen pertama, “tengah” atau terakhir }
DeklarasiPrec : address { alamat predesesor }
Deskripsi
{ C i d P }
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 65/136
Halaman 65
{ Cari predesesor P }
if (P = First (L) then {Delete list dengansatu elemen }
DeleteFirst (L,P)
else
Prec ← First (L)
While (Next(Prec) ≠ P ) doPrec ← Next (Prec)
endwhile { Next (Prec) = P , hapus P }DeleteAfter (Prec , P)
endif
IV 3 3 DELETELast :
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 66/136
Halaman 66
IV. 3.3. DELETELast :
Menghapus elemen terakhir list dapat dilakukan jika
alamat dari elemen sebelum elemen terakhir diketahui. Persoalan selanjutnya menjadi persoalanDeleteAfter, kalau last bukan satu- satunya elemen
list 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, listmungkin menjadi kosong
Proses : P adalah alamat elemen terakhir list
sebelum penghapusan }
Deklarasi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 67/136
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← Last
If Preclast = Nil then { list dg 1 elemen, jadi kosong }First(L)← Nil
Else
Next ( preclast )← Nil
endif
IV 5 K k t i d b h li t li i
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 68/136
Halaman 68
IV. 5. Konkatenasi dua buah list linier
Concat adalah menggabungkan dua list. Dalam contoh berikut list kedua disambungkan ke list pertama. Jadi
Last (L1) menjadi predesesor First (L2). Realisasi
algoritma adalah sebuah prosedur sebagai berikut :
Procedure CONCAT (Input L1, L2 : List, Output :
L3 : List )
{K. awal : L1 ≠ L2, L1 ≠ L3,dan L3 ≠ L2; L1, L2
mungkin kosongK. Akhir : L3 adalah hasil konkatenasi (menyambung)
dua buah list linier, L2 ditaruh dibelakang
L1 }
Deklarasi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 69/136
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
Bagian Deklarasi dari algoritma pada List Linier :
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 70/136
Halaman 70
Bagian Deklarasi dari algoritma pada List Linier :
Deklarasi
type InfoType = … {Sebuah type terdefinisi}
type Address pointer to ElmtL
type ElmtL = record
<Info : InfoType,
Next : Address >type List = record <First : Address >
{Deklarasi Nama Peubah}
L : List
P : Address
SoalSoal SoalSoal LatihanLatihan
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 71/136
Halaman 71
SoalSoal--SoalSoal LatihanLatihan
I. 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 elemen bertipe integer, buatlah :1. Sebuah prosedur untuk menghitung
jumlah elemen list yang genap2. Prosedur untuk menghitung rata-rata
elemen list yang ganjil
3. Prosedur untuk menghitung banyaknya
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 72/136
Halaman 72
3. Prosedur untuk menghitung banyaknyaelemen list yang positif (lebih besar dari
nol)4. Prosedur untuk mencetak elemen list yang
genap
IV. Diketahui sebuah list dengan elemen bertype
integer terurut membesar, buatlah :1. Fungsi untuk mengirimkan elemen pertamalist
2. Fungsi untuk mencari elemen list yangminimum3. Fungsi untuk menghitung banyaknya
elemen yang lebih besar dari 100
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 73/136
Halaman 73
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 74/136
Halaman 74
5. Stack (5. Stack (TumpukanTumpukan))5.1. Definisi
STACK (Tumpukan) adalah list linier yang :
1. Dikenali elemen puncaknya (TOP)
2. Aturan penyisipan dan penghapusan
elemennya tertentu :
-Penyisipan selalu dilakukan “di atas “ TOP
-Penghapusan selalu dilakukan pada TOP
i i d h
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 75/136
Halaman 75
Karena aturan penyisipan dan penghapusan semacam
itu, TOP adalah satu-satunya alamat tempat terjadioperasi. Elemen yang ditambahkan paling akhir akan
menjadi elemen yang akan dihapus.Dikatakan
bahwa elemen Stack akan tersusun secara LIFO( Last In First Out ).
Maka secara lojik, sebuah STACK dapat
digambarkan sebagai list linier yang setiapelemennya adalah
Type ElmtS = record<Info : InfoType,
Next : address >
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 76/136
Halaman 76
dengan InfoType terdefinisi yang menentukan
informasi 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, supaya penambahan dan penghapusan dengan
mudah dan efisien dapat dilakukan.
Sehingga jika S adalah sebuah Stack dan P
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 77/136
Halaman 77
Sehingga jika S adalah sebuah Stack, dan Padalah address maka
Top (S) adalah alamat elemen TOP, dimanaoperasi penyisipan/penghapusan dilakukan.
Info (P) adalah informasi yang disimpan padaalamat P
Next (P) adalah alamat suksesor P ElmtS (P) adalah sebuah elemen stack yang
beralamat P
Stack kosong adalah Stack dengan Top (S) = Nil ( tidak terdefinisi )
Bagian Deklarasi dari algoritma pada Stack :
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 78/136
Halaman 78
ag a e a as da a go t a pada Stac :
Deklarasi
type InfoType = … {Sebuah type terdefinisi}
type Address pointer to ElmtS
type ElmtS = record
<Info : InfoType,
Next : Address >type Stack = record <TOP : Address>
{Deklarasi Nama Peubah}
S : Stack
P : Address
5 2 Traversal5 2 Traversal padapada StackStack
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 79/136
Halaman 79
Pada stack, jarang sekali dilakukantraversal, karena keunikan Stack justru
pada operasi yang hanya menyangkutelemen TOP. Namun dibutuhkantraversal misalnya untuk mencetak isi
Stack.
5.3. Search pada Stack Pada stack, elemen yang diproses hanyalah
elemen pada TOP. Maka hampir tidak pernah
dilakukan search.
5.2. Traversal5.2. Traversal padapada StackStack
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 80/136
Halaman 80
5.4.5.4. OperasiOperasi dandan fungsifungsi dasar dasar
padapada STACK.STACK.
a. Test STACK kosong
Mengetahui bahwa stack kosong atau
tidak sangat penting, sebab semua operasi
akan dilakukan berdasarkan kosong atautidaknya suatu Stack. Realisasi algoritma
dari definisi fungsional ini adalah sebuahfungsi yang melakukan test terhadap Stack
sebagai berikut :
f ti St kE t (S STACK)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 81/136
Halaman 81
function StackEmpty (S : STACK) →
Boolean{ TEST stack kosong : Mengirim true, jika
tumpukan kosong, false jika tumpukan tidak kosong}
Deklarasi
Deskripsi
return (Top (S) = Nil)
b. Pembuatan STACK kosong
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 82/136
Halaman 82
Membuat Stack kosong diperlukan untuk memulai
memakai stack. Realisasi algoritma dari definisifungsional ini adalah sebuah prosedur yangmelakukan 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
c Penambahan sebuah elemen pada
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 83/136
Halaman 83
c.Penambahan sebuah elemen pada
STACK (Push)Penambahan selalu dilakukan pada TOP, dan
karena alamat TOP diketahui maka prosesnya
sederhana. Berikut ini akan diberikan skema
prosedur penyisipan tersebut. Realisasi algoritma
dari definisi fungsional ini adalah salah satu dari
dua buah prosedur yang melakukan penambahan
elemen stack sebagai berikut. Prosedur pertama
menambahkan suatu ElmtS yang diketahuialamatnya dan yang kedua menambahkan suatu
nilai ElmtS yang diberikan.
procedure Push@ (Input/Output S : STACK Input P :
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 84/136
Halaman 84
p @ ( p p paddress)
{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
procedure Push( Input / Output S:STACK Input E: InfoType )
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 85/136
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 : address
DeskripsiAlokasi ( P ) { alokasi selau berhasil }
Info(P) ← E
{ insert sebagai elemen pertama } Next(P)← TOP(S)
TOP(S)← P
d. Penghapusan sebuah elemen pada
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 86/136
Halaman 86
g p p
STACK (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 salah
satu dari dua buah prosedur yang melakukanpengambilan elemen stack sebagai berikut .Prosedur pertama mengambil suatu Elmts dengan
menyimpan alamatnya dan yang kedua mengambilnilai , dan membebaskan alamat ( dealokasi ) yangtadinya dipakai
procedure PopStack@(Input/Output S : STACK
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 87/136
Halaman 87
procedure PopStack @(Input/Output S : STACK Output P : address)
{K.Awal : Stack tidak kosong
K.Akhir : Alamat elemen Top (S) disimpan pada
P, sehingga informasinya dapat diaksesmelalui P
Proses : Menghapus elemen stack, stack tidak boleh
kosong dan mungkin menjadi kosong }Deklarasi
Deskripsi
P ← TOP (S)TOP (S) ← Next(TOP(S))
procedure PopStack (Input/Output S : STACK
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 88/136
Halaman 88
Output E : InfoType)
{K.Awal : Stack tidak kosongK.Akhir : Alamat elemen Top (S) disimpan pada
E, alamat TOP yang lama didealokasi
Proses : Menghapus elemen stack, stack tidak bolehkosong dan mungkin menjadi kosong }
Deklarasi
P : addressDeskripsi
P ← TOP (S)
E← Info(P)TOP (S) ← Next(TOP(S))
Dealokasi (P)
SoalSoal--SoalSoal LatihanLatihan
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 89/136
Halaman 89
SoalSoal SoalSoal LatihanLatihan
1. Mengapa cara penyusunan elemen pada
Stack sering disebut tersusun secara
LIFO?2. Mengapa pada Stack Traversal dan Search
jarang dilakukan?3. Penghapusan elemen pada Stack selalu
dilakukan pada elemen yang paling atas,
bagaimana jika terpaksa harus menghapus
elemen yang paling bawah?
4. Buatlah sebuah fungsi untuk menghitung jumlahl k jik dik h i b h
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 90/136
Halaman 90
elemen stack yang genap, jika diketahui sebuah
stack dengan elemen bertype integer.5. Buatlah fungsi/prosedur untuk mencetak elemen
stack yang ganjil
6. Buatlah juga fungsi untuk menghitung rata-rataelemen 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
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 91/136
Halaman 91
6 Queue (6 Queue (AntrianAntrian))
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 92/136
Halaman 92
6. Queue (6. Queue (AntrianAntrian))
6.1. DefinisiQueue (Antrian) adalah list linier yang :
1. Dikenali elemen pertama (Head) dan elementerakhirnya (Tail)
2. Aturan penyisipan dan penghapusan elemennyadisefinisikan sebagai berikut :
- Penyisipan selalu dilakukan setelah elementerakhir
- Penghapusan selalu dilakukan pada elemen pertama
3. Satu elemen dengan elemen lain dapat diakses
melalui informasi Next
Struktur data ini banyak dipakai dalam
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 93/136
Halaman 93
informatika misalnya untuk merepresentasi :
1. Antrian job dalam sistem operasi
2. Antrian dalam dunia nyata
Maka secara lojik, sebuah Queue dapat
digambarkan sebagai list linier yang setiap
elemennya adalah :Type ElmtQ = record
<Info : InfoType,Next : address >
dengan InfoType terdefinisi yang menentukan
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 94/136
Halaman 94
dengan InfoType terdefinisi yang menentukan
informasi yang disimpan pada setiap elemenqueue, dan address adalah “alamat” dari
elemen
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)
Bagian Deklarasi dari algoritma pada Queue :
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 95/136
Halaman 95
Deklarasi
type InfoType = … {Sebuah type terdefinisi}
type Address pointer to ElmtQ
type ElmtQ = record<Info : InfoType,
Next : Address >
type Queue = record <Head : Address,Tail : Address>
{Deklarasi Nama Peubah}
Q : Queue
P : Address
6 2 Traversal6.2. Traversal padapada QueueQueue
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 96/136
Halaman 96
Pada queue, jarang sekali dilakukantraversal, karena keunikan Queue justru
pada operasi yang hanya menyangkutelemen pertama dan terakhir. Namundibutuhkan traversal misalnya untuk
mencetak isi Antrian.
6.3. Search pada QueuePada Queue, elemen yang diproses hanyalah
elemen pada pertama dan terakhir. Maka
hampir tidak pernah dilakukan search.
6.2. Traversal6.2. Traversal padapada QueueQueue
6.4.6.4. OperasiOperasi dandan fungsifungsi dasar dasar
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 97/136
Halaman 97
padapada Queue.Queue.a. Test Queue kosong
Mengetahui bahwa Queue kosong atau tidak sangat penting, sebab semua operasi akan
dilakukan berdasarkan kosong atau tidaknya
suatu Queue. Realisasi algoritma dari definisi
fungsional ini adalah sebuah fungsi yang
melakukan test terhadap Queue sebagai berikut :
function IsQEmpty (Q : Queue) → Boolean
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 98/136
Halaman 98
function IsQEmpty (Q : Queue) → Boolean
{ TEST Queue kosong : Mengirim true, jikaantrian kosong, false jika antrian tidak
kosong}
Deklarasi
Deskripsi
return ((Head(Q) = Nil) and (Tail(Q) = Nil))
b. Pembuatan Queue kosong
M b t Q k di l k t k l i
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 99/136
Halaman 99
Membuat Queue kosong diperlukan untuk memulai
memakai Queue. Realisasi algoritma dari definisifungsional ini adalah sebuah prosedur yangmelakukan inisialisasi Queue sebagai berikut :
Procedure CreateEmptyQ (Output Q : Queue)
{K. Awal : sembarang,
K. Akhir : sebuah queue Q yang kosong terbentuk
Proses : Membuat queue kosong }
Deklarasi
DeskripsiHead(Q) ← Nil
Tail(Q)← Nil
c.Penambahan sebuah elemen pada
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 100/136
Halaman 100
c.Penambahan sebuah elemen pada
QueuePenambahan selalu dilakukan pada ekor,
dan karena alamat ekor diketahui makaprosesnya sederhana, yaitu hanya
InsertLast.
Berikut ini akan diberikan skema prosedur
penyisipan tersebut.
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 101/136
Halaman 101
Realisasi algoritma dari definisi fungsional iniadalah salah satu dari dua buah prosedur
yang melakukan penambahan elemen
Queue sebagai berikut :
Prosedur pertama menambahkan suatuElemen Queue yang diketahui alamatnya
dan yang kedua menambahkan suatu nilaiElemen queue yang diberikan.
procedure InsertQ@ (Input/Output Q : Queue
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 102/136
Halaman 102
Input P : address)
{K.Awal : Queue mungkin kosong, P terdefinisi(berarti terdefinisi informasinya, Next
(P) = NilK.Akhir : P menjadi elemen Tail dari Q dan
Tail yang baru adalah P
Proses : Insert sebuah elemen beralamat P pada Tail dari antrian Q }
Deklarasi
Deskripsi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 103/136
Halaman 103
Deskripsi
If IsQEmpty(Q) then
Head(Q)← P
Tail(Q)← P
else
Next(Tail(Q))← P
Tail(Q)← P
endif
procedure InsertQ(Input/Output Q : Queue
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 104/136
Halaman 104
p Q( p p Q Q
Input E : InfoType){K.Awal : Queue mungkin kosong, E
terdefinisiK.Akhir : Elemen Tail dari Q yang baru
bernilai EProses : Insert sebuah elemen nilai pada
Tail dari antrian Q }Deklarasi
Deskripsi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 105/136
Halaman 105
p
Alokasi (P)Info (P) ← E
If IsQEmpty(Q) thenHead(Q)← P
Tail(Q) ← P
else
Next(Tail(Q)) ← P
Tail(Q) ← Pendif
d. Penghapusan Elemen Pada QueuE
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 106/136
Halaman 106
g p Q
Penghapusan elemen pada queue selaludilakukan pada elemen pertama, hanya saja
perlu diperhitungkan bahwa mungkin queue
menjadi kosong akibat terjadinya
penghapusan. Jika queue menjadi kosong,
maka harga Tail harus diganti. Jika akibat penghapusan queue tidak kosong, maka
elemen terakhir tidak berubah.
Berikut adalah skema penghapusan tersebut
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 107/136
Halaman 107
Berikut adalah skema penghapusan tersebut.
Prosedur pertama melakukan penghapusanElmtQ yang berada di Head danyang dicatat
adalah alamatnya, yaitu P. Prosedur yangkedua menghapus elemen Head dari queue dan
menyimpannya pada suatu elmtQ serta
membebaskan alamat yang tadinya dipakaioleh elemen Head tersebut.
procedure DeleteQ@(Input/Output Q : Queue
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 108/136
Halaman 108
p Q@( p p Q Q
Output P : address){K.Awal : Queue tidak kosong
K.Akhir : P bukan lagi elemen dari Q, P≠
Nil, Next(P) = Nil
Proses : Menghapus elemen Head dari antrian,
antrian tidak boleh kosong dan
mungkin menjadi kosong }
Deklarasi
Deskripsi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 109/136
Halaman 109
P← Head(Q)Head(Q)← Next(Head(Q))
if (Head(Q) = Nil) then
Tail(Q)← Nil
endif
Next(P)← Nil
procedure DeleteQ(Input/Output Q : Queue
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 110/136
Halaman 110
p Q( p p Q Q
Output E : InfoType){K.Awal : Queue tidak kosong
K.Akhir : Jika P adalah Head(Q). P bukan lagi
elemen dari Q, P ≠ Nil, Next(P) = Nil
Proses : Menghapus elemen Head dari antrian,antrian tidak boleh kosong danmungkin menjadi kosong }
Deklarasi
Deskripsi
P← Head(Q)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 111/136
Halaman 111
P← Head(Q)
E ← Info(Head(Q))
Head(Q)← Next(Head(Q))
if (Head(Q) = Nil) then
Tail(Q)← Nilendif
Next(P)← NilDealokasi(P)
SoalSoal--SoalSoal
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 112/136
Halaman 112
1. Mengapa cara penyusunan elemen pada
Queue Sering disebut tersusun secara
FIFO?2. Mengapa pada Queue Traversal dan
Search jarang dilakukan?3. Penghapusan elemen pada Queue selalu
dilakukan pada elemen yang paling depan,
bagaimana jika terpaksa harus menghapus
elemen yang paling belakang?
4. Buatlah sebuah fungsi untuk menghitung jumlah
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 113/136
Halaman 113
elemen queue yang ganjil, jika diketahui sebuah
queue dengan elemen bertype integer.
5. Buatlah fungsi/prosedur untuk mencetak elemen
queue yang genep6. Buatlah juga fungsi untuk menghitung rata-rata
elemen queue yang ganjil
7. Buatlah sebuah fungsi untuk mengirimkan elemen
pertama queue
8. Buatlah sebuah fungsi untuk mengirimkan elemenqueue yang maksimum jika diketahui elemen queue
terurut membesar dan bertype integer
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 114/136
Halaman 114
7.7. PohonPohon (Tree)(Tree)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 115/136
Halaman 115
7.1. Definisi Rekurens Dari PohonSebuah pohon adalah himpunan terbatas tidak
kosong, dengan elemen yang dibedakansebagai berikut :
1. Sebuah elemen yang dibedakan dari yanglain yang disebut sebagai AKAR (root ) dari
pohon
2. Elemen yang lain (jika masih ada) dibagi-
bagi menjadi beberapa sub himpunan yangdisjoint dan masing-masing sub himpunantersebut adalah pohon yang disebut sebagai
sub pohon dari pohon tersebut.
Beberapa Istilah
1 H t
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 116/136
Halaman 116
1. Hutan
Hutan adalah sequence (list) dari pohon
2. Simpul ( Node)
Simpul adalah elemen dari pohon yangmemungkinkan akses pada sub pohon dimanasimpul tersebut berfungsi sebagai Akar
3. Cabang
Cabang adalah hubungan antara Akar dengan
sub pohon
4. Ayah
Ak d i b h h d l h A h d i
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 117/136
Halaman 117
Akar dari sebuah pohon adalah Ayah dari
sub pohon5. Anak
Anak dari sebuah pohon adalah Sub pohon6. Saudara
Saudara adalah simpul-simpul yang
mempunyai Ayah yang sama7. Daun
Daun adalah simpul terminal dari pohon.Semua simpul selain Daun adalah simpul
bukan terminal
8. Jalan ( Path)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 118/136
Halaman 118
Jalan adalah suatu urutan tertentu dariCabang
9. Derajat
Derajat sebuah pohon adalah banyaknya
anak dari dari pohon tersebut.
Jika sebuah simpul berderajat N disebut
pohon N-aire
1 disebut pohon 1-aire/uner
2 disebut pohon 2-aire/biner
10. Tingkat (Level)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 119/136
Halaman 119
Level pohon adalah panjangnya jalan dariAkar sampai dengan simpul yang
bersangkutan. Panjang dari jalan adalah
banyaknya simpul yang dikandung pada jalan tersebut. Akar mempunyai tingkat sama
dengan 1.
Dua buah simpul disebut sebagai Sepupu jikamempunyai tingkat yang sama dalam sebuah
pohon.
11. Kedalaman (Tinggi)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 120/136
Halaman 120
Kedalaman (Tinggi) dari pohon adalah nilaimaksimum dari tingkat simpul yang ada pada pohon tersebut. Kedalaman adalah panjang
maksimum jalan dari Akar menuju ke sebuahdaun
12. Lebar
Lebar sebuah Pohon adalah maksimum
banyaknya simpul yang ada pada suatuTingkat (Level)
7.2. Struktur Pohon Biner
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 121/136
Halaman 121
DefinisiSebuah pohon biner ( Binary Tree) adalah
himpunan terbatas yang :
Mungkin kosong atau
Terdiri dari sebuah simpul yang disebut
sebagai Akar dan dua buah himpunan lainyang disjoint yang merupakan pohon biner yang disebut sebagai Sub Pohon Kiri ( Left )
dan Sub Pohon Kanan ( Right ) dari pohon biner tersebut.
Pohon biner merupakan tipe yang sangat penting
dari struktur data dan banyak dijumpai
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 122/136
Halaman 122
dari struktur data dan banyak dijumpai
dalam berbagai terapan. Karakteristik yang
dimiliki oleh pohon biner adalah bahwa
setiap simpul paling banyak hanyamemiliki dua buah anak, dan mungkin
tidak punya anak.
Istilah-istilah yang digunakan sama dengan
istilah pada pohon secara umum.
Notasi Prefiks, Infiks dan Postfiks
1 N t i P fik
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 123/136
Halaman 123
1. Notasi Prefiks
Notasi Prefiks ditulis dengan cara mengikuti
alur sebagai berikut :
2. Notasi Infiks
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 124/136
Halaman 124
Notasi ini ditulis dengan cara mengikuti alur sebagai berikut :
3. Notasi Posfiks
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 125/136
Halaman 125
Notasi ini ditulis dengan cara mengikuti alur sebagai berikut :
Rekonstruksi Algoritma
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 126/136
Halaman 126
{Deklarasi Type}Type Infotype = … {terdefinisi}
Type node = record <Info : infotype,Left : address,
Right: address >
Type BinTree : address
{Primitif}
function Akar (P : BinTree)→ infotype
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 127/136
Halaman 127
{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}
function IsEmpty(P : BinTree)→ boolean
{ Test apakah sebuah pohon kosong
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 128/136
Halaman 128
{ 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 : sembarang
K. Akhir : Terbentuk sebuah pohon biner
Proses : Menghasilkan sebuah pohon biner dari Akar, L dan R}
{Traversal}
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 129/136
Halaman 129
Procedur PreOrder(input P : BinTree){K. AWAL : P terdefinisi
K. AKHIR : Semua simpul P sudahdiproses secara preorder}
Procedure InOrder(input P : BinTree)
{K. AWAL : P terdefinisi
K. AKHIR : Semua simpul P sudah
diproses secara inorder}
Procedure PostOrder(input P : BinTree)
{K AWAL : P terdefinisi
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 130/136
Halaman 130
{K. AWAL : P terdefinisi
K. AKHIR : Semua simpul P sudah
diproses secara postorder}
Procedure PrintTree(input P : BinTree, h : integer)
{K. AWAL : P terdefinisi, h adalah jarak indentasi
K. AKHIR : Semua simpul P sudah ditulis dengan
indentasi}
{Search}
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 131/136
Halaman 131
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}
function NbDaun(P : BinTree)→integer
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 132/136
Halaman 132
{ Mengirimkan banyaknya daun pohon biner P}function IsUnerLeft(P : BinTree)→ boolean
{ Mengirimkan True jika pohon biner tidak kosong P adalah pohon unerleft yaitu hanya
mempunyai sub pohon kiri}
function IsUnerRight(P : BinTree)→ boolean
{ Mengirimkan True jika pohon biner tidak
kosong P adalah pohon unerright yaitu hanyamempunyai sub pohon kanan}
function IsBin(P : BinTree)→ boolean
{ Mengirimkan True jika pohon biner tidak
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 133/136
Halaman 133
{ 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}
function Tinggi(P : BinTree)→integer
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 134/136
Halaman 134
{ 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}
Procedure AddDaunTerkiri(input/output P:BinTree,input X: infotype)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 135/136
Halaman 135
input X: infotype)
{K. AWAL : P boleh kosong
K. AKHIR : P bertambah simpulnya, dengan X
adalah simpul daun terkiri}Procedure AddDaun(input/output P:BinTree, input
X, Y : infotype, input Kiri : boolean)
{K. AWAL : P tidak boleh kosong, X adalah salahsatu daun pohon Biner P
K. AKHIR : P bertambah simpulnya, dengan Yadalah anak kiri X (jika kiri) atausebagai anak kanan X (jika not kiri)}
Procedure DelDaunTerkiri(input/outputP:BinTree output X: infotype)
5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com
http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 136/136
P:BinTree, output X: infotype)
{K. AWAL : P tidak kosong
K. AKHIR: P dihapus daun terkirinya dan
didealokasi, dengan X adalah infoyang semula disimpan pada daunterkiri yang dihapus}
Procedure DelDaun(input/output P:BinTree,output X: infotype)
{K. AWAL : P tidak kosong, X adalah salah satudaun