Вы находитесь на странице: 1из 16

REV 00 Tujuan, Keadaan dan Kembali REV 00

BAB 1 PENGENALAN
(Purpose, Conditions and Return)
Rujukan 1.1 KOD PSEUDO(PSEUDOCODE) • Tujuan (Purpose)
• Merupakan perwakilan kod yang diperlukan untuk – Pernyataan pendek berkenaan tujuan algorithma
algorithma – Memberitahu proses secara keseluruhan/umum
• Hampir menyerupai bahasa Inggeris • Keadaan (Condition)
Gilberg, Forouzan, Data Structure: A – Terdapat 2 jenis iaitu Precondition dan
• Bahasa Inggeris + kod berstruktur
Pseudocode Approach with C, PWS Postcondition
Kepala Algoritma (Algorithm Header)
Publisher – Precondition: senaraikan keperluan untuk
• Menerangkan parameter & senarai mana-mana parameter
ISBN 0-534-951236 pre & post conditions – Postcondition: kenalpasti tindakan yang diambil
• Kebanyakan pengaturcara yang menggunakan dan status untuk mana-mana output parameter
algorithma hanya melihat maklumat pada header, • Kembali (Return)
bukan keseluruhan algorithma – Kadangkala tidak diperlukan
• Maklumat header mestilah lengkap – Jika ada nilai yang perlu dikembalikan
DDC 2423 STRUKTUR DATA 1 DDC 2423 STRUKTUR DATA 2 DDC 2423 STRUKTUR DATA 3

REV 00 REV 00 REV 00


1.2 JENIS DATA NISKALA
(ABSTRACT DATA TYPE)
• Data atomik bertentangan dengan data komposit BAB 2 SENARAI LINEAR
Spaghetti Code – Data komposit boleh dipecahkan kepada 2.1 KONSEP SENARAI LINEAR
subbahagian
Struktur data • Terdapat 2 kategori: umum dan terhad
Modular Programming
• Satu set data hasil gabungan data atomik dan • Umum
data komposit – Data boleh diselit dan dihapuskan dimana-
Object-
Object-oriented Programming mana bahagian
• Struktur: bermaksud set peraturan yang
• Terhad
Data Atomik dan komposit menggabungkan data bersama-sama
– Data hanya boleh ditambah atau dihapuskan
• Data atomik: data yang dipilih dan ia merupakan Jenis Data Niskala (Abstract data types) pada penghujung struktur sahaja
data tunggal • Pengisytiharan data dan operasi • 4 operasi senarai linear: insertion, deletion,
• Data komposit: data yang mempunyai ciri unik • Kegunaan kepada semua pengaturcara retrieval dan traversal

DDC 2423 STRUKTUR DATA 4 DDC 2423 STRUKTUR DATA 5 DDC 2423 STRUKTUR DATA 6

REV 00 REV 00 REV 00

2.2 SENARAI BERPAUT (LINKED LIST)


• Merupakan satu susunan data dan setiap
elemennya mengandungi lokasi untuk elemen
yang seterusnya (next element)

• Setiap elemen mengandungi 2 bahagian:


– Bahagian data
– Bahagian link
• Singly linked list: senarai berpaut yang paling
ringkas (hanya mengandungi 1 link sahaja)
• Kelebihan linked list berbanding general list:
– Data mudah diselit atau dihapuskan
DDC 2423 STRUKTUR DATA 7 DDC 2423 STRUKTUR DATA 8 DDC 2423 STRUKTUR DATA 9
REV 00 REV 00 REV 00
• Nod: elemen dalam linked list
2.3 ALGORITMA SENARAI BERPAUT
• Struktur data senarai berpaut
– Penunjuk untuk permulaan senarai = head pointer • Terdapat 10 operasi asas untuk senarai berpaut:
• Struktur nod kepala – Create list
– Apabila nod mengandungi data berkenaan dengan – Insert node
list, data tersebut dikenali sebagai metadata – Delete node
– 2 jenis metadata – Search list
– Retrieve node
– Empty list Rujuk algoritma ms 72-74
– Full list
– List count
– Traverse list
– Destroy list
DDC 2423 STRUKTUR DATA 10 DDC 2423 STRUKTUR DATA 11 DDC 2423 STRUKTUR DATA 12

REV 00 REV 00 REV 00

2.3.1 Cipta Senarai (Create List) 2.3.2 Tambah Nod (Insert Node)
b) Tambah nod pada
• Memperuntukkan a)Tambah nod ke senarai
permulaan senarai
ingatan bagi nod yang kosong (Insert into
empty list) (add node at beginning)
kepala dan setkan
semua komponen • Jika head adalah null,
nod kepada nilai- bermakna senarai adalah • Semak penuding
nilai yang kosong predecessor, jika null
bersesuaian • Setkan alamat nod baru maka kita berada pada
pada list head pointer dan permulaan senarai
• Rujuk algoritma 3-1
ms 75 pastikan link field adalah
null

DDC 2423 STRUKTUR DATA 13 DDC 2423 STRUKTUR DATA 14 DDC 2423 STRUKTUR DATA 15

REV 00 REV 00 REV 00


d) Tambah nod di penghujung senarai
2.3.3 Hapuskan Nod (Delete Node)
c) Tambah nod di tengah (add node at end)
senarai • Setkan predecessor ke nod baru a) Delete first node
(add node in middle) • Tiada successor untuk disetkan • Untuk hapuskan nod
• Algoritma 3-2 ms 80 pertama, perlu
• Untuk selit nod antara pastikan head
2 nod, kita perlu pointer ditunjukkan
setkan nod baru ke ke successor nod
successor dan setkan pertama
predecessornya ke
nod baru

DDC 2423 STRUKTUR DATA 16 DDC 2423 STRUKTUR DATA 17 DDC 2423 STRUKTUR DATA 18
REV 00 REV 00 REV 00
2.3.4 Search List 2.3.5 Retrieve Node
b) Linked list delete-general case
• Algoritma 3-3 • Guna carian nod untuk tempatkan data dalam
senarai
ms 83
• Jika data ditemui, ia akan pindahkan data ke
• Guna
ruang output dan kembalikan true
Release (pLoc)
• Jika tidak ditemui, kembalikan false
• Algoritma 3-5 ms 87

DDC 2423 STRUKTUR DATA 19 DDC 2423 STRUKTUR DATA 20 DDC 2423 STRUKTUR DATA 21

REV 00 REV 00 REV 00


2.3.6 Empty List 2.3.9 Traverse List
2.3.8 List Count
• Return boolean untuk tentukan samada dalam • Periksa setiap nod dalam senarai
senarai ada data atau tidak • Hanya perlu kembalikan nilai count • Perlukan walking pointer yang bergerak dari satu
• Algoritma 3-6 ms 87 • Algoritma 3-8 ms 88 nod ke nod yang lain
• Menggunakan loop sehinggalah semua nod telah
2.3.7 Full List
diperiksa
• Satu-satunya cara ialah cuba tambahkan nod dan
peruntukkan ingatan
• Jika berjaya, maka return false
– Bermakna senarai tidak penuh
• Jika tidak berjaya, maka return true
– Bermakna senarai penuh
• Algoritma 3-7 ms 88
DDC 2423 STRUKTUR DATA 22 DDC 2423 STRUKTUR DATA 23 DDC 2423 STRUKTUR DATA 24

REV 00 REV 00 REV 00

2.3.10 Destroy List 2.4 COMPLEX LINKED LIST STRUCTURES b) Circularly-Linked List
• Nod terakhir menuding kepada nod pertama
• Nod tidak diperlukan a) Header Nodes dalam senarai
• Hapuskan nod dan ruang ingatan – Lebih kompleks

DDC 2423 STRUKTUR DATA 25 DDC 2423 STRUKTUR DATA 26 DDC 2423 STRUKTUR DATA 27
REV 00 REV 00 REV 00

c) Doubly Linked List i) Doubly-Linked List Insertion ii) Doubly-Linked List Deletion
• Setiap nod mempunyai penuding kepada nod
sebelum dan nod selepasnya
• Guna 2 penuding: B dan F

DDC 2423 STRUKTUR DATA 28 DDC 2423 STRUKTUR DATA 29 DDC 2423 STRUKTUR DATA 30

REV 00
BAB 3 STACK REV 00

ii) Pop
REV 00

2.5 LINKED LIST C IMPLEMENTATION


3.1 BASIC STACK OPERATIONS • Data pada top dalam timbunan dikeluarkan
• Rujuk lampiran aturcara dan memulangkan nilai kepada pengguna
• 3 operasi asas timbunan
– Program List (Bab 2) • Underflow: berlaku apabila operasi pop
i) Push
• Menambah data kepada timbunan
dilakukan apabila timbunan adalah kosong
• Setelah push, data tersebut akan menjadi top
• Overflow: berlaku apabila operasi push
dilakukan apabila timbunan sudah penuh dan
tiada ruang lagi

DDC 2423 STRUKTUR DATA 31 DDC 2423 STRUKTUR DATA 32 DDC 2423 STRUKTUR DATA 33

REV 00 REV 00 REV 00


Contoh operasi timbunan
iii) Stack Top
• Menyalin data yang terletak pada top dan
memulangkan nilainya kepada pengguna
tetapi tidak menghapusnya
• Hampir sama dengan pop tetapi data yang
di pop tidak dihapuskan

DDC 2423 STRUKTUR DATA 34 DDC 2423 STRUKTUR DATA 35 DDC 2423 STRUKTUR DATA 36
REV 00 REV 00 Linked list stack operations REV 00
3.2 STACK-LINKED LIST IMPLEMENTATION 3.2.1 Algoritma Timbunan
• 2 struktur data yang berbeza diperlukan: • Terdapat 8 jenis operasi:
– Head: mengandungi metadata dan penuding – Create stack
untuk top – Push stack
– Data node: mengandungi data & link pointer – Pop stack
kepada next node dalam timbunan – Stack top
– Empty stack
– Full stack
– Stack count
– Destroy stack
(Rujuk algoritma pada ms 154Æ 157)

DDC 2423 STRUKTUR DATA 37 DDC 2423 STRUKTUR DATA 38 DDC 2423 STRUKTUR DATA 39

REV 00 REV 00 REV 00


Push stack example 3.3 STACK APPLICATIONS
a) Reverse a list
• Terdapat 4 kategori :
– Pushkan semua data ke dalam timbunan
1. Reversing data
dan kemudian popkan data tersebut dan
2. Parsing data cetakkan
3. Postponing data usage
– Algoritma 4-9 ms 164
4. Backtracking
Pop stack example 3.3.1 Reversing Data
b) Convert decimal to binary
• Tukar kedudukan data.
• Contoh {1234} Æ{4321} – Algoritma 4-10 ms 165
• Terdapat 2 reversing applications:
a) Reverse a list
b) Convert decimal to binary
DDC 2423 STRUKTUR DATA 40 DDC 2423 STRUKTUR DATA 41 DDC 2423 STRUKTUR DATA 42

REV 00 REV 00 REV 00


3.3.2 Parsing Data 3.3.3 Postponement Infix to postfix transformation

• Memecahkan data kepada bentuk yang tidak • Terdapat 2 jenis:


bergantungan (independent)
a) Infix to postfix transformation
• Contohnya untuk menterjemah program sumber
• Pernyataan aritmetik boleh dipersembahkan
ke bahasa mesin, pengkompil mesti memecah
dalam 3 format yang berbeza:
(parse) program tersebut kepada bahgaian-
bahagian seperti katakunci, nama dan token – Infix : a+b
– Postfix : ab+
– prefix. : +ab

DDC 2423 STRUKTUR DATA 43 DDC 2423 STRUKTUR DATA 44 DDC 2423 STRUKTUR DATA 45
b) Evaluating postfix expressions
REV 00
3.4 ADT-LINKED LIST IMPLEMENTATION
REV 00
BAB 4 QUEUE REV 00

• Adalah senarai linear iaitu data hanya boleh


• Stack ADT definitions diselit pada rear dan hanya boleh dihapus pada
• Create stack front
• Push stack • Struktur FIFO
• Pop stack
Rujuk lampiran
• Stack top aturcara
• Empty stack
•Program Stack (Bab 3)
• Full stack
• Stack count • Terdapat 4 operasi asas baris gilir
• Destroy stack – Retrieved dari front
– Retrieved dari rear
DDC 2423 STRUKTUR DATA 46 DDC 2423 STRUKTUR DATA 47 – Selit pada rearDDC 2423 STRUKTUR DATA 48

H d if t

REV 00 REV 00 REV 00


4.1 OPERASI ASAS BARIS GILIR
• Enqueue • Dequeue
Queue front: data pada hadapan queue – Operasi penambahan nod (Queue insert - Operasi penghapusan nod (Queue delete
operation) operation)
– Selepas data diselit, elemen yang baru akan - Data pada front akan dikeluarkan dari queue
menjadi rear
- Underflow: berlaku jika tidak ada elemen dalam
– Overflow: berlaku jika tidak cukup ruang tetapi queue tetapi operasi dequeue dilakukan
operasi enqueue masih dilakukan
Queue rear: data terakhir pada queue

DDC 2423 STRUKTUR DATA 49 DDC 2423 STRUKTUR DATA 50 DDC 2423 STRUKTUR DATA 51

REV 00
REV 00 REV 00
4.2 QUEUE-LINKED-LIST DESIGN

• 2 jenis struktur yang digunakan iaitu head dan


node
• Kepala Baris Gilir (Queue head)
Contoh queue – Mengandungi 2 penuding (front dan rear) dan
count
• Nod data baris Gilir
(Queue data node)
– Mengandungi data
dan ruang pautan
yang menuding ke
nod yang seterusnya
DDC 2423 STRUKTUR DATA 52 DDC 2423 STRUKTUR DATA 53 DDC 2423 STRUKTUR DATA 54
REV 00 Contoh fungsi asas queue REV 00 REV 00

DDC 2423 STRUKTUR DATA 55 DDC 2423 STRUKTUR DATA 56 DDC 2423 STRUKTUR DATA 57

REV 00 REV 00 REV 00


4.2.1 Algoritma Baris Gilir Dequeue
Create queue • Algoritma 5-3
• Peruntukkan ingatan untuk queue head Retrieving queue Data
• Setkan penunding front dan rear ke null • Algoritma 5-4
• Setkan count ke 0 Empty queue
• Algoritma 5-1
• Algoritma 5-5
Enqueue Rujuk ms 221Æ223
Full queue
• Apabila insert data ke empty queue, penuding front
dan rear mesti disetkan untuk menunding ke nod baru • Algoritma 5-6
• Apabila insert data ke queue yang mengandungi data, Queue count
mesti tunding kedua-dua ruang pautan, serta • Algoritma 5-7
penuding rear ke nod baru Destroy Queue
• Mesti semak ada samada overflow
• Algoritma 5-8
• Pulangkan nilai Boolean true atau boolean false
DDC 2423 STRUKTUR DATA 58 • Algoritma 5-2 DDC 2423 STRUKTUR DATA 59 DDC 2423 STRUKTUR DATA 60

REV 00 REV 00 REV 00


4.3 QUEUE APPLICATION BAB 5 RECURSION
4.4 QUEUE – LINKED LIST IMPLEMENTATION
Queue simulation 5.1 FACTORIAL
• Merupakan contoh simulasi baris gilir dalam • Rujuk lampiran aturcara • Terdapat 2 bentuk: iterative dan rekursif
kehidupaan harian – Program Queue 1 (Bab 4) • Faktorial (4) adalah seperti berikut
• Terdiri daripada elemen yang berikut: – Program Queue 2 (Bab 4) – Faktorial (4)=4 x 3 x 2 x 1
A. Events – Adalah bentuk iterative
B. Data Structures
C. Output
D. Simulation Algorithm • Algorithma yang berulang-ulang menggunakan
rekursif, contoh faktorial dalam bentuk rekursif

DDC 2423 STRUKTUR DATA 61 DDC 2423 STRUKTUR DATA 62 DDC 2423 STRUKTUR DATA 63
REV 00 REV 00 REV 00
–2 perjalanan: 5.2 HOW RECURSION WORKS
• Penyelesaian secara
• Bahagikan masalah dari atas ke bawah Iterative • Mula-mula mesti tahu bagaimana panggilan (call)
berfungsi
• Kemudian dari bawah ke atas – Rujuk Algoritma 6-1 • Apabila program memanggil subrutin, contohnya
• Penyelesaian secara fungsi dalam C, modul semasa akan memberhentikan
rekursif proses seketika dan subrutin yang dipanggil tadi akan
mengawal program tadi
– Rujuk Algoritma 6-2
• Apabila proses pada
– Rujuk rajah subrutin sudah selesai,
di sebelah • Proses akan kembali ke
modul yang memanggilnya
tadi
• Modul tadi akan
meneruskan prosesnya
Call and return
DDC 2423 STRUKTUR DATA 64 DDC 2423 STRUKTUR DATA 65
yang terberhenti tadi
DDC 2423 STRUKTUR DATA 66

REV 00 REV 00 REV 00


5.3 FIBONACCI NUMBERS
• Jujukan Fibonacci adalah satu jujukan integer
0,1,1,2,3,5,8,13,21,34,….
• Setiap elemen dalam jujukan adalah jumlah bagi
dua elemen terdahulu. Contoh:
0+1=1, 1+1=2, 1+2=3, 2+3=5,….
• Algoritma 6–5
• Secara ringkasnya:
– Diberi :
Fibonacci ( 0 ) = 0
Fibonacci ( 1 ) = 1
– Maka
• Fibonacci ( n ) = Fibonacci ( n -1 ) + Fibonacci
( n -2 )
DDC 2423 STRUKTUR DATA 67 DDC 2423 STRUKTUR DATA 68 DDC 2423 STRUKTUR DATA 69

REV 00 REV 00 REV 00


•Jujukan Fibonacci 5.4 TOWERS OF HANOI

• Adalah satu prosedur rekursif.


• Peraturan-peraturan :
1. Hanya satu cakera boleh digerakkan ke
atas pada satu masa
2. Cakera terbesar tidak boleh diletakkan di
atas cakera kecil
3. Menara digerakkan dari satu kedudukan
ke kedudukan lain menggunakan satu Towers solution for two disks
kedudukan sementara (auxiliary)
DDC 2423 STRUKTUR DATA 70 DDC 2423 STRUKTUR DATA 71 DDC 2423 STRUKTUR DATA 72
REV 00 REV 00 REV 00
• Rujuk kepada algoritma 6-7 ms 286 5.5 C IMPLEMENTATIONS OF RECURSION
Calls: Output:
Towers (3, A, C, B) • Rujuk lampiran aturcara
Towers (2, A, B, C) – Program Recursion 1 (Bab 5)
Towers (1, A, C, B)
Step 1: Move from A to C – Program Recursion 2 (Bab 5)
Step 2: Move from A to B
Towers (1, C, B, A)
Step 3: Move from C to B
Step 4: Move from A to C
Towers (2, B, C, A)
Towers (1, B, A, C)
Step 5: Move from B to A
Step 6: Move from B to C
Towers (1, A, C, B)
Towers solution for two disks Step 7: Move from A to C
DDC 2423 STRUKTUR DATA 73 DDC 2423 STRUKTUR DATA 74 DDC 2423 STRUKTUR DATA 75

REV 00 REV 00 REV 00


BAB 6 INTRODUCTION TO TREES 6.2 BINARY TREES
6.1 BASIC TREE CONCEPTS • Adalah pepohon di mana tiada nod yang
• Nod : elemen pada pepohon mempunyai lebih daripada 2 subpohon
• Branches : yang menghubungkan nod • Nod boleh ada 0, 1 atau 2 subpohon sahaja
• Degree : bilangan branches bagi nod • Ada left subtree dan right subtree
• Root : nod pertama
• Null tree: pepohon yang tiada ada nod
Terminologi
• Leaf : nod yang outdegree = 0
(tiada nod dibawahnya)
• Internal nodes: nod yang bukan root atau leaf
• Parent : jika ada nod dibawahnya
• Child : (outdegree >0)
• Siblings : 2 atau > nod yang sama parents
DDC 2423 STRUKTUR DATA 76 DDC 2423 STRUKTUR DATA 77 DDC 2423 STRUKTUR DATA 78

REV 00 REV 00 REV 00


6.3 BINARY TREE TRAVERSALS
Binary Tree Structure
Properties • Rujuk rajah di bawah • Ada 2 kaedah iaitu
– Height of binary trees – Depth first
– Balance – Breadth first
– Complete binary trees Depth First

Preorder Traversal Inorder Traversal Postorder Traversal


root-->left-->right left-->root-->right left-->right-->root

DDC 2423 STRUKTUR DATA 79 DDC 2423 STRUKTUR DATA 80 DDC 2423 STRUKTUR DATA 81
REV 00 REV 00 REV 00
a) Preorder Traversal b) Inorder Traversal c) Postorder Traversal
– Penjelajahan pratertib – Penjelajahan tertib – Penjelajahan
– root-->left-->right – left-->root-->right Pascatertib
– Rujuk algoritma 7-2 – Rujuk algoritma 7-3 – left-->right-->root
– Rujuk algoritma 7-4

DDC 2423 STRUKTUR DATA 82 DDC 2423 STRUKTUR DATA 83 DDC 2423 STRUKTUR DATA 84

REV 00 REV 00 REV 00

6.4 C IMPLEMENTATIONS OF TREE


BAB 7 SEARCH TREES
Breadth First
7.1 BINARY SEARCH TREES
• Proses semua children sebelum meneruskan • Rujuk lampiran aturcara Definition
proses terhadap tahap (level) seterusnya – Program Tree 1 (Bab 6) • Pohon carian binari (binary search tree) adalah
• Jika root adalah pada tahap (level) n, proses – Program Tree 2 (Bab 6) pohon binari yang mempunyai ciri-ciri berikut:
semua nod pada tahap (level) n terlebih dahulu 1.Semua item pada left subtree adalah lebih
sebelum memproses nod pada tahap (level) n+1 kurang daripada root
• Kalau guna depth first: guna timbunan (stack) 2.Semua item pada right subtree adalah lebih
• Kalau guna breadth: guna baris gilir (queue) besar atau sama dengan root
• Rujuk algoritma 7-5 3.Setiap subtree adalah binary search tree

DDC 2423 STRUKTUR DATA 85 DDC 2423 STRUKTUR DATA 86 DDC 2423 STRUKTUR DATA 87

REV 00 REV 00 REV 00


Binary Search Invalid Binary Operations on Binary Search
b) Binary search tree search algorithm
Trees Search Trees a) Binary search tree traversals
i. Find smallest node
• Apakah output setelah melakukan penjelajahan
pratertib (preorder traversal), penjelajahan – Semak left branches sehinggalah jumpa leaf
pascatertib (postorder traversal) dan – Algoritma 8-1 ms 337
penjelajahan tertib (inorder traversal)? ii. Find largest node
• Contoh – Semak right branches sehinggalah ke akhir
nod dalam pohon
– Algoritma 8-2 ms 338
iii. Find a requested node
• Output: – Menggunakan search key
– Preorder traversal: 23 18 12 20 44 35 52 – Lakukan perbandingan
– Postorder traversal: 12 20 18 35 52 44 23 – Algoritma 8-3 ms 339
– Inorder traversal: 12 18 20 23 35 44 52
DDC 2423 STRUKTUR DATA 88 DDC 2423 STRUKTUR DATA 89 DDC 2423 STRUKTUR DATA 90
REV 00 REV 00 REV 00
Insert Node a) Recursive Insert Node Rajah 7-1
• Nod yang diselit akan menjadi leaf – Jika null tree
• Contoh di bawah adalah menyelit nod 19 dan • Setkan alamat nod baru untuk gantikan
nod 38 null tree
– Jika bukan null tree
• Tentukan branch yang mana hendak
diikut dan panggil secara rekursif untuk
tentukan samada sudah jadi leaf atau
tidak
– Algoritma 8-5 ms 343
– Rajah 7-1

DDC 2423 STRUKTUR DATA 91 DDC 2423 STRUKTUR DATA 92 DDC 2423 STRUKTUR DATA 93

REV 00 Rajah 7-2 REV 00 REV 00


Delete Node 7.2 C IMPLEMENTATIONS OF BINARY TREE
• Untuk hapus nod, perlu cari tempat terlebih
dahulu • Rujuk lampiran aturcara
• 4 keadaan jika hapus nod – Program Binary Tree (Bab 7)
– Nod yang dihapuskan tiada anak
– Nod yang dihapuskan hanya mempunyai right
subtree
– Nod yang dihapuskan hanya mempunyai left
subtree
– Nod yang dihapuskan mempunyai 2 subtree
• Rajah 7-2

DDC 2423 STRUKTUR DATA 94 DDC 2423 STRUKTUR DATA 95 DDC 2423 STRUKTUR DATA 96

REV 00 REV 00 REV 00


BAB 8 GRAPH Rajah 8-1
• 2 jenis graf:
8.1 TERMINOLOGY
– Directed graph
• Graf: koleksi vertices dan koleksi garis (lines)
• Setiap garisnya ada arah (kepala anak
– Vertices iaitu nod-nod panah) ke successornya
– Garis (lines) iaitu segmen garis yang • Lines pada graf ini dikenali sebagai arka
menyambung sepasang nod (arcs)
– Indirected graph
• Tiada arah pada garis iaitu edges
• Aliran boleh ke mana-mana arah

DDC 2423 STRUKTUR DATA 97 DDC 2423 STRUKTUR DATA 98 DDC 2423 STRUKTUR DATA 99
REV 00 REV 00 REV 00
Rajah 8-2
• Dua vertices pada graf dipanggil adjacent vertices • Darjah (degree) bagi vertex adalah bilangan garis
(bersebelahan) jika ada edge yang menghubung (lines) atau arka yang insiden padanya
kedua-duanya • Luar darjah (outdegree): bilangan arka yang
• Path: adalah jujukan vertices dimana setiap keluar dari vertex
vertices adalah bersebelahan antara satu sama • Dalam darjah (indegree): bilangan arka yang
lain masuk vertex
• Dua vertices dikatakan bersambung (connected) • Contoh (rujuk rajah 8-2(a))
jika ada path antara mereka
– Degree bagi vertex B=3 dan vertex E = 4
– strongly connected
– indegree vertex B=1
– weakly connected Rujuk Rajah 8-2 – outdegree vertex B= 2
– disjoint

DDC 2423 STRUKTUR DATA 100 DDC 2423 STRUKTUR DATA 101 DDC 2423 STRUKTUR DATA 102

REV 00 2) Delete Vertex REV 00 REV 00

8.2 OPERATIONS • Hapuskan vertex dari graf 3) Find Vertex


1) Add Vertex • Apabila vertex dihapuskan maka garisnya (edges) • menjelajah graf dan cari vertex yang tertentu
• Tambah vertex baru ke dalam graf juga perlu dihapuskan
• Jika dijumpai, alamatnya akan dikembalikan
• Perlu buat operasi delete edge dan jika tidak dijumpai, ralat akan dikembalikan
• Apabila tambah vertex, ianya tidak bersambung
(disjoint) dengan vertex lain pada graf • Delete vertex
• Maka setelah vertex ditambah, ianya perlu
disambung; perlu buat add edge
• Add edge

• Delete edge

DDC 2423 STRUKTUR DATA 103 DDC 2423 STRUKTUR DATA 104 DDC 2423 STRUKTUR DATA 105

REV 00 REV 00 REV 00

8.3 TRAVERSE GRAPH Depth First traversal of a graph


Breadth-First
Depth First
• Semua adjacent vertices bagi vertex akan
• Bergantung kepada bagaimana graf disimpan diproses sebelum ke tahap seterusnya
secara fizikalnya
• Konsep yang sama seperti penjelajahan pohon
• Depth First traversal of a tree (Breadth-First Traversal of a tree)
• Setelah diproses, letakkan semua ke dalam
baris gilir (Queue)

DDC 2423 STRUKTUR DATA 106 DDC 2423 STRUKTUR DATA 107 DDC 2423 STRUKTUR DATA 108
REV 00 REV 00 REV 00
Depth First traversal of a graph 8.3 ABSTRACT DATA TYPE
Breadth First traversal of a tree
• Rujuk lampiran aturcara
– Program Graph 1 (Bab 8)
– Program Graph 2 (Bab 8)

DDC 2423 STRUKTUR DATA 109 DDC 2423 STRUKTUR DATA 110 DDC 2423 STRUKTUR DATA 111

REV 00 REV 00 REV 00

BAB 9 SORTING • Contoh kestabilan isihan


• Susunan isihan (sort order)
9.1 GENERAL SORT CONCEPTS – Jujukan bagi data yang diisih sama ada
• Sorting: satu proses dimana data disusun menurun (descending) atau menaik
mengikut nilainya (ascending)
• Klasifikasi isihan adalah seperti rajah berikut: – Jika sort order tidak diberitahu, maka anggap
sebagai menaik (ascending)
• Kestabilan isihan (sort stability)
– Adalah sifat bagi isihan yang memastikan
bahawa data akan kekalkan input pada • Kecekapan isihan (sort efficiency)
outputnya – Measure of the relative efficiency of a sort
• Passes
– Setiap penjelajahan data merujuk kepada sort
pass
DDC 2423 STRUKTUR DATA 112 DDC 2423 STRUKTUR DATA 113 DDC 2423 STRUKTUR DATA 114

REV 00 REV 00 REV 00


Rajah 9-1
9.2 SELECTION SORT 1) Straight selection sort
–Senarai dibahagikan kepada 2 iaitu sorted dan
• Diberi 1 senarai data yang perlu diisih, kita perlu unsorted yang dibahagikan oleh dinding (wall)
pilih (select) data terkecil (smallest item) dan –Pilih elemen terkecil dari senarai belum diisih
letakkannya ke dalam senarai terisih (unsorted) dan tukarkannya dengan elemen
• Proses ini akan diulang sehingga semua data pertama dalam senarai belum diisih tersebut
telah diisih
• 2 jenis: straight selection sort dan heap sort

–Dinding akan bergerak


–Rujuk algoritma 11-3
DDC 2423 STRUKTUR DATA 115 DDC 2423 STRUKTUR DATA 116 DDC 2423 STRUKTUR DATA 117
2) Heap sort REV 00 REV 00 REV 00

– Pilih dari unsorted list tetapi pilih elemen • Selection sort implementation 9.3 EXCHANGE SORT
terbesar (largest element). Contoh: – Selection sort C code
• Terdiri daripada 2 jenis
• Rujuk lampiran aturcara
1) Bubble sort
–Program Selection Sort (Bab 9)
• Senarai dibahagikan kepada 2 iaitu sorted dan
unsorted
• Smallest element is bubbled from the unsorted
sublist and moved to the sorted sublist
• Dinding akan bergerak satu elemen ke kanan
• Rajah 9-2 & Rajah 9-3
• Rujuk algoritma 11-5

– Rujuk algoritma 11-4


DDC 2423 STRUKTUR DATA 118 DDC 2423 STRUKTUR DATA 119 DDC 2423 STRUKTUR DATA 120

REV 00 REV 00 Rajah 9-4 REV 00


Rajah 9-2 2) Quick sort
• Lebih efisien berbanding bubble sort
• Terdapat pivot
• Senarai dibahagikan kepada 3 kumpulan
– Elemen yang lebih kecil daripada pivot key
Rajah 9-3 – Pivot elemen yang diletakkan di lokasi yang
betul pada senarai
– Elemen yang sama atau lebih besar daripada
pivot key
• Perlu pilih median
• Rujuk algoritma 11-6, 11-7 dan 11-8
• Rajah 9-4, 9-5 dan 9-6

DDC 2423 STRUKTUR DATA 121 DDC 2423 STRUKTUR DATA 122 DDC 2423 STRUKTUR DATA 123

REV 00 REV 00 REV 00


Rajah 9-5 Rajah 9-6
• Exchange sort implementation
– Exchange sort C code
– Rujuk lampiran aturcara
• Program bubbleSort(Bab 9)
• Program quickSort (Bab 9)

DDC 2423 STRUKTUR DATA 124 DDC 2423 STRUKTUR DATA 125 DDC 2423 STRUKTUR DATA 126
REV 00 Rajah 9-7 dan 9-8 REV 00 REV 00

2) Shell Sort
• Konsep: satu atau lebih data yang telah diisih akan • Versi straight insertion sort yang telah diperbaiki.
diselit (insert) ke lokasi yang betul dalam senarai yang
tersusun • Diberi N elemen, senarai dibahagikan kepada K
• 2 jenis iaitu segmen dimana K adalah increment
1) Straight insertion sort • Setiap segmen mengandungi N/K atau lebih
– Senarai dibahagikan kepada 2 bahagian: sorted dan elemen
unsorted • Rajah 9-9, 9-10 dan 9-11
– Bagi setiap pass, elemen pertama dalam unsorted
• Rujuk algoritma11-2
list akan diselitkan ke lokasi yang sesuai dalam
sorted list
– Rujuk Rajah 9-7 dan 9-8
– Rujuk algoritma 11-1

DDC 2423 STRUKTUR DATA 127 DDC 2423 STRUKTUR DATA 128 DDC 2423 STRUKTUR DATA 129

REV 00 REV 00 REV 00


Rajah 9-10 Rajah 9-11
Rajah 9-9

DDC 2423 STRUKTUR DATA 130 DDC 2423 STRUKTUR DATA 131 DDC 2423 STRUKTUR DATA 132

REV 00 REV 00 REV 00


Rajah 9-12
• Insertion sort implementation 9.5 MERGE (EXTERNAL) SORT
– Insertion sort C code
– Rujuk lampiran aturcara • Merge ialah satu proses di mana terdapat 2 fail
yang disusun mengikut kekuncinya (key) sendiri
• Program Sort 1 (Bab 8)
• Program Sort 2 (Bab 8) dan digabungkan menjadi satu fail yang baru
dan menggunakan kekunci (key) yang sama
• Rajah 9-12 & Rajah 9-13
• Algoritma 11-9

DDC 2423 STRUKTUR DATA 133 DDC 2423 STRUKTUR DATA 134 DDC 2423 STRUKTUR DATA 135
REV 00 REV 00 Rajah 9-14 REV 00
Rajah 9-13
• Ada 3 jenis iaitu
1) Natural Merge
– Perlukan distribution phase
– Rajah 9-14
2) Balanced Merge
– Tidak perlukan distribution phase
– Rajah 9-15
3) Polyphase Merge
– Fail yang telah digabung akan digunakan
semula sebaik sahaja selesai digabung
– Rajah 9-16
DDC 2423 STRUKTUR DATA 136 DDC 2423 STRUKTUR DATA 137 DDC 2423 STRUKTUR DATA 138

Rajah 9-15 REV 00


Rajah 9-16 REV 00

DDC 2423 STRUKTUR DATA 139 DDC 2423 STRUKTUR DATA 140

Вам также может понравиться