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

17123192 Bahan Kuliah Struktur Data

Embed Size (px)

Citation preview

Page 1: 17123192 Bahan Kuliah Struktur Data

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

Page 2: 17123192 Bahan Kuliah Struktur Data

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

Page 3: 17123192 Bahan Kuliah Struktur Data

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

Page 4: 17123192 Bahan Kuliah Struktur Data

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%

Page 5: 17123192 Bahan Kuliah Struktur Data

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

Page 6: 17123192 Bahan Kuliah Struktur Data

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

 

Page 7: 17123192 Bahan Kuliah Struktur Data

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

 

Page 8: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 9: 17123192 Bahan Kuliah Struktur Data

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 )

 

Page 10: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 11: 17123192 Bahan Kuliah Struktur Data

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

 

Page 12: 17123192 Bahan Kuliah Struktur Data

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;

 

Page 13: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 14: 17123192 Bahan Kuliah Struktur Data

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 

 

Page 15: 17123192 Bahan Kuliah Struktur Data

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

 

Page 16: 17123192 Bahan Kuliah Struktur Data

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;

 

Page 17: 17123192 Bahan Kuliah Struktur Data

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 }

  

Page 18: 17123192 Bahan Kuliah Struktur Data

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 

  

Page 19: 17123192 Bahan Kuliah Struktur Data

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 

 

Page 20: 17123192 Bahan Kuliah Struktur Data

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

 

Page 21: 17123192 Bahan Kuliah Struktur Data

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 

 

Page 22: 17123192 Bahan Kuliah Struktur Data

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 

 

Page 23: 17123192 Bahan Kuliah Struktur Data

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

 

Page 24: 17123192 Bahan Kuliah Struktur Data

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

 

Page 25: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 26: 17123192 Bahan Kuliah Struktur Data

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

 

Page 27: 17123192 Bahan Kuliah Struktur Data

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

 

Page 28: 17123192 Bahan Kuliah Struktur Data

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 

 

Page 29: 17123192 Bahan Kuliah Struktur Data

5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com

http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 29/136

Halaman 29

 

Page 30: 17123192 Bahan Kuliah Struktur Data

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 >

 

Page 31: 17123192 Bahan Kuliah Struktur Data

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

 

Page 32: 17123192 Bahan Kuliah Struktur Data

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 

 

Page 33: 17123192 Bahan Kuliah Struktur Data

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)

 

Page 34: 17123192 Bahan Kuliah Struktur Data

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

 

Page 35: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 36: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 37: 17123192 Bahan Kuliah Struktur Data

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

 

Page 38: 17123192 Bahan Kuliah Struktur Data

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

 

Page 39: 17123192 Bahan Kuliah Struktur Data

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 :

 

Page 40: 17123192 Bahan Kuliah Struktur Data

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

 

Page 41: 17123192 Bahan Kuliah Struktur Data

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

Page 42: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 43: 17123192 Bahan Kuliah Struktur Data

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 }

 

Page 44: 17123192 Bahan Kuliah Struktur Data

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

 

Page 45: 17123192 Bahan Kuliah Struktur Data

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}

 

Page 46: 17123192 Bahan Kuliah Struktur Data

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 }

 

Page 47: 17123192 Bahan Kuliah Struktur Data

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}

 

Page 48: 17123192 Bahan Kuliah Struktur Data

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

 

Page 49: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 50: 17123192 Bahan Kuliah Struktur Data

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)

 

Page 51: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 52: 17123192 Bahan Kuliah Struktur Data

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

Page 53: 17123192 Bahan Kuliah Struktur Data

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)

Page 54: 17123192 Bahan Kuliah Struktur Data

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)

Page 55: 17123192 Bahan Kuliah Struktur Data

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

Page 56: 17123192 Bahan Kuliah Struktur Data

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

Page 57: 17123192 Bahan Kuliah Struktur Data

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

Page 58: 17123192 Bahan Kuliah Struktur Data

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)

Page 59: 17123192 Bahan Kuliah Struktur Data

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

Page 60: 17123192 Bahan Kuliah Struktur Data

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

Page 61: 17123192 Bahan Kuliah Struktur Data

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 :

Page 62: 17123192 Bahan Kuliah Struktur Data

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 :

Page 63: 17123192 Bahan Kuliah Struktur Data

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

Page 64: 17123192 Bahan Kuliah Struktur Data

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 }

Page 65: 17123192 Bahan Kuliah Struktur Data

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 :

Page 66: 17123192 Bahan Kuliah Struktur Data

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

Page 67: 17123192 Bahan Kuliah Struktur Data

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

Page 68: 17123192 Bahan Kuliah Struktur Data

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

Page 69: 17123192 Bahan Kuliah Struktur Data

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 :

Page 70: 17123192 Bahan Kuliah Struktur Data

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

Page 71: 17123192 Bahan Kuliah Struktur Data

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

Page 72: 17123192 Bahan Kuliah Struktur Data

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

 

Page 73: 17123192 Bahan Kuliah Struktur Data

5/8/2018 17123192 Bahan Kuliah Struktur Data - slidepdf.com

http://slidepdf.com/reader/full/17123192-bahan-kuliah-struktur-data 73/136

Halaman 73

 

Page 74: 17123192 Bahan Kuliah Struktur Data

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

Page 75: 17123192 Bahan Kuliah Struktur Data

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 >

 

Page 76: 17123192 Bahan Kuliah Struktur Data

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

Page 77: 17123192 Bahan Kuliah Struktur Data

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 :

Page 78: 17123192 Bahan Kuliah Struktur Data

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

Page 79: 17123192 Bahan Kuliah Struktur Data

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

 

Page 80: 17123192 Bahan Kuliah Struktur Data

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)

Page 81: 17123192 Bahan Kuliah Struktur Data

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

Page 82: 17123192 Bahan Kuliah Struktur Data

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

Page 83: 17123192 Bahan Kuliah Struktur Data

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 :

Page 84: 17123192 Bahan Kuliah Struktur Data

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 )

Page 85: 17123192 Bahan Kuliah Struktur Data

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

Page 86: 17123192 Bahan Kuliah Struktur Data

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

Page 87: 17123192 Bahan Kuliah Struktur Data

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 

Page 88: 17123192 Bahan Kuliah Struktur Data

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

Page 89: 17123192 Bahan Kuliah Struktur Data

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

Page 90: 17123192 Bahan Kuliah Struktur Data

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 

 

Page 91: 17123192 Bahan Kuliah Struktur Data

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

Page 92: 17123192 Bahan Kuliah Struktur Data

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

Page 93: 17123192 Bahan Kuliah Struktur Data

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

Page 94: 17123192 Bahan Kuliah Struktur Data

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 :

Page 95: 17123192 Bahan Kuliah Struktur Data

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

Page 96: 17123192 Bahan Kuliah Struktur Data

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 

Page 97: 17123192 Bahan Kuliah Struktur Data

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

Page 98: 17123192 Bahan Kuliah Struktur Data

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

Page 99: 17123192 Bahan Kuliah Struktur Data

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

Page 100: 17123192 Bahan Kuliah Struktur Data

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.

 

Page 101: 17123192 Bahan Kuliah Struktur Data

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

Page 102: 17123192 Bahan Kuliah Struktur Data

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

Page 103: 17123192 Bahan Kuliah Struktur Data

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

Page 104: 17123192 Bahan Kuliah Struktur Data

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

Page 105: 17123192 Bahan Kuliah Struktur Data

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

Page 106: 17123192 Bahan Kuliah Struktur Data

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

Page 107: 17123192 Bahan Kuliah Struktur Data

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

Page 108: 17123192 Bahan Kuliah Struktur Data

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

 

Page 109: 17123192 Bahan Kuliah Struktur Data

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

Page 110: 17123192 Bahan Kuliah Struktur Data

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)

Page 111: 17123192 Bahan Kuliah Struktur Data

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

Page 112: 17123192 Bahan Kuliah Struktur Data

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

Page 113: 17123192 Bahan Kuliah Struktur Data

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 

 

Page 114: 17123192 Bahan Kuliah Struktur Data

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)

Page 115: 17123192 Bahan Kuliah Struktur Data

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

Page 116: 17123192 Bahan Kuliah Struktur Data

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

Page 117: 17123192 Bahan Kuliah Struktur Data

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)

Page 118: 17123192 Bahan Kuliah Struktur Data

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)

Page 119: 17123192 Bahan Kuliah Struktur Data

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)

Page 120: 17123192 Bahan Kuliah Struktur Data

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

Page 121: 17123192 Bahan Kuliah Struktur Data

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

Page 122: 17123192 Bahan Kuliah Struktur Data

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

Page 123: 17123192 Bahan Kuliah Struktur Data

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

Page 124: 17123192 Bahan Kuliah Struktur Data

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

Page 125: 17123192 Bahan Kuliah Struktur Data

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

Page 126: 17123192 Bahan Kuliah Struktur Data

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

Page 127: 17123192 Bahan Kuliah Struktur Data

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

Page 128: 17123192 Bahan Kuliah Struktur Data

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}

Page 129: 17123192 Bahan Kuliah Struktur Data

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

Page 130: 17123192 Bahan Kuliah Struktur Data

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}

Page 131: 17123192 Bahan Kuliah Struktur Data

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 

Page 132: 17123192 Bahan Kuliah Struktur Data

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

Page 133: 17123192 Bahan Kuliah Struktur Data

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 

Page 134: 17123192 Bahan Kuliah Struktur Data

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)

Page 135: 17123192 Bahan Kuliah Struktur Data

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)

Page 136: 17123192 Bahan Kuliah Struktur Data

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