Anda di halaman 1dari 76

1

STPUITUP DATA


Ir. Wihartini, M.Eng
Ir. Hari Soetanto, M.Sc

SASARAN :

MENINSkATkAN :
PEMAHAMAM PEM0ETAHUAM TEMTAM0 TEOPI DASAP STPUITUP DATA DAM
PEMAM0AMAM DATA,
SEPTA PEM8UATAM AL0OPITMA DAM PEM00UMAAM STPUITUP DATA DALAM
PEMPO0PAMAM

MATERI :
1, kONSEP DAN : - Tipe dun Definisi
DEFINISI - Operusi Dutu

Z, ARRAY : - Arruy dimensi 1 Z 3
- Arruy Mupping Function {AMF}
- ImpIementusi Arruy

3, RECORD : - Fied Record
- Vuriunt Record
- Operusi Record
- Memory Mupping

4, LINkED LIST : - konsep pointer & Iinked Iist
- Operusi pointer & Iinked Iist
- Jenis Iinked Iist : SingIe doubIe dun circuIur

, STACk : - Operusi Stuck
- ApIikusi Stuck

, QUEUE : - Operusi Queue
- ApIikusi Queue
- Deque
- Priority Queue

7, STRUkTUR : - ImpIementusi dng, Arruy
DATA LINIER - ImpIementusi dng, List

, STRUkT, DATA : - TerminoIogi Tree
NON LINIER {Tree} - kurukteristik Tree
- EIemen-eIemen Tree
- Struktur Hirurki
- TruversuI
- inury Tree :
- Operusi & impIementusi
- inury Seurch Tree {ST}
- AVL Tree
- Heup
- -Tree

9, SRUkT,DATA : - TerminoIogi Sruph
NON LINIER {Sruph} - Representusi Sruph
- TruversuI : DFS & FS

9, SORTINS : - SimpIe sort : Echunge SeIection Insert
- Advunced sort Quick Heup dun Rudi

2
10, SEARCHINS : - SequentiuI inury Fibonuci

11, HASHINS : - Fungsi Hushing
- Teknik Rehushing
DAFTAR PUSTAkA

1, Horowithz EIIis und Surtug Suhni FundumentuI of Computer AIgorithms
Computer Science Press 19
Z, Robert Sedgewick AIgorithms in C++ Addison-WesIey PubIishing Compuny
199Z
3, Robert L, kruse ruce P,Leung CIouis L, Tondo Dutu Structures und
Progrum Design in C Prentice HuII 1997
4, Murk AIIen Weiss Dutu Structure & AIgorithm AnuIysis in C++ The
engumin/Cummings PubIishing Compuny Inc, 1994
, WiIIium Ford und WiIIium Topp Dutu Dtructures with C++ Prentice HuII
1997





TIPE DAN DEFINISI DATA


DEFINISI DATA :
ADALAH FAITA ATAU IEMYATAAM YAM0 TEPCATAT MEM0EMAI SUATU
O8YEI

Pengerfion dofo ini menyirofkon suofu niIoi yong biso dinyofokon doIom benfuk
konsfonfo ofou voriobeI.
- konstuntu menyofokon niIoi yong fefop,
- VuriubeI digunokon doIom progrom unfuk menyofokon niIoi yong
dopof diuboh-uboh seIomo eksekusi berIongsung


ADA 4 ISTILAH TENTANS DATA YAITU :

Tipe dutu :
mocom/isi dofo di doIom suofu voriobeI doIom bohoso progrom

Obyek dutu :
sef dori eIemen , misoI X sef biIongon infeger.

Representusi dutu :
Suofu mopping dori sfrukfur dofo d kesuofu sef dori sfrukfur dofo e,
misoI booIeon direpresenfosikon doIom 0 don I.

Struktur dutu :
Sfrukfur odoIoh koIeksi dori voriobeI yong dinyofokon dengon sebuoh
nomo, dengon sifof sefiop voriobeI dopof memiIiki fipe yong berIoinon
Sfrukfur dofo bioso dipokoi unfuk mengeIompokkon beberopo informosi yong
berkoifon menjodi sebuoh kesofuon.




Hirurkhi duri tipe dutu :

Tipe dutu


3


Sederhunu Terstruktur Pointer


ReuI OrdinuI
-fIout
-doubIe


int chur booIeun
{operutor Iogik}


string urruy record fiIe set


1, TIPE DATA SEDERHANA
Honyo dimungkinkon unfuk menyimpon sebuoh niIoi dofo doIom sebuoh voriobeI .

Ado b mocom :
- 8iIongon buIof (infeger)
- 8iIongon reoI presisi-funggoI (fIoof)
- 8iIongon reoI presisi-gondo (doubIe)
- Iorokfer
- Tok-berfipe
- 8ooIeon (operofor Iogiko)
Tipe TotuI bit kuwusun keterungun

Chor 8 -IZ8 s/d IZ7 korokfer
Inf Io -3Z7o8 s/d 3Z7o7 biIongon infeger
FIoof 3Z 3.4E-38 s/d 3.4E+38 biI.reoI - Presisi funggoI
DoubIe o4 I.7E-308 s/d I.7E+308 biI.reoI - Presisi gondo
Void o fok berfipe

TIPE DATA OOLEAN
mempunyoi Z niIoi : TPUE don FALSE

Operofor Moksud
&& Don (AMD)
|| ofou (OP)
l Tidok (MOT)

Operofor Iogiko bioso dipokoi unfuk menghubungkon ungkopon reIosi.
8oik operondI moupun operondZ dopof berupo ungkopon reIosi ofoupun
ungkopon Iogiko. HosiI ungkopon berniIoi benor (frue) ofou soIoh
(foIse)

OperondI OperondZ HosiI
|| &&
soIoh soIoh soIoh soIoh
soIoh benor benor soIoh
benor soIoh benor soIoh
benor benor benor benor

contoh :
if (piIihon ~~ 'Y') || (piIihon ~~ 'y') {,,,.}
Z, TIPE DATA TERSTRUkTUR
4
odoIoh fipe dimono suofu voriobeI biso menyimpon Iebih dori sebuoh niIoi dofo.
Mosing-mosing niIoi dofo disebuf komponen.

Adu mucum :
u, Tipe String
dofo yong berisi sederefon korokfer dimono bonyoknyo korokfer biso
beruboh-uboh sesuoi kebufuhon.

entuk umum :
chur numu_vuriubeI[ukurunj;

contoh : chur numu[30j;

b, Iurik {urruy}
dimono voriobeI Iorik honyo biso menyimpon I fipe dofo sojo.

entuk umum :
tipe dutu numu_vuriubeI[ukurunj;

contoh : fIout A[10j;
int X[j[j Y[10j;

c, record
ferdiri dori beberopo voriobeI yong fersfrukfur don mosing-mosing voriobeI
biso mempunyoi fipe yong berbedo.

entuk umum :
struct numu_tipe_struktur
{ tipe fieId1;
tipe fieIdZ;
,,,,,;
tipe fieIdn;
} vur_struk1 vur_strukZ,,vur_strukn;

contoh struktur dutu duri info_mhs :
sfrucf dofo_fonggoI
{ inf fonggoI,
inf buIon,
inf fohun,
},

sfrucf dofo_mhs
{ chor nomo[Zb],
sfrucf dofo_fonggoI fgI_Iohir,
} info_mhs,

numu

info_mhs tungguI

tgI_Iuhir buIun

tuhun
d, set {himpunun}

1, union
memungkinkon suofu Iokosi memori difempofi oIeh duo ofou
Iebih voriobeI yong fipenyo biso berIoinon.
entuk umum :
Union nomo_union
{
5
fipe fieIdI,
,,,,. ,
fipe fieIdn,
} vor_unionI, vor_unionZ,

contoh :
union
{
unsigned inf dof_inf,
unsigned chor dof_chor[Z],
}biI_x,

Z, enumerusi
merupokon himpunon dori konsfonfo infeger yong diberi nomo.

entuk umum :

Enum nomo_enum
{ konsfonfo_I, konsfonfo_Z, ,.,
konsfonfo_n} vor_I, vor_Z,,, vor_n,

contoh :
enum monusio { prio, wonifo},
enum monusio jns_keIomin,

biIo jns keIomin diisi prio moko niIoi jns_keIomin ~ 0 don seboIiknyo
biIo diisi monifo niIoi ~ I,

e, fiIe
Merupokon orgonisosi dori sejumIoh record sejenis. Mosing-mosing
record dopof ferdiri dori sofu ofou beberopo fieId don sefiop
fieId ferdiri dori sofu ofou beberopo korokfer.

FiIe



record ,, record



fieId ,,, fieId


chur ,,, chur

3, TIPE DATA POINTER
VoriobeI poinfer berisi oIomof dori suofu obyek Ioin (yoifu obyek yong
difunjuk oIeh poinfer fersebuf).

entuk umum : tipe *numu pointer;

Contoh : int *pu;
pu = &;

pointer pu menunguk uIumut ,

OPERASI DATA :

o. Tipe dutu sederhunu
6

Tipe dutu integer
Menempofi memori seponjong Z byfe, don merupokon biIongon berfondo.

#incIude sfdio.h
moin() {
inf infI, infZ,

cIrscr(),
prinff("\n\nmosukkon dofo :\n\r infI ~ "),
sconf(" 7d" ,&infI),
prinff(" \n\r infZ ~ "),
sconf(" 7d" , &infZ),
prinff("\n\r infI ~ 7d hekso~ 7x oIomof di ~ 7x", infI,infI,&infI),
prinff("\n\r infZ ~ 7d hekso~ 7x oIomof di ~ 7x", infZ,infZ,&infZ),
gefch(),
refurn(0),
}

HusiI :

mosukkon dofo :
infI ~ I00
infZ ~ -I00

infI ~ I00 hekso ~ o4 oIomof di ffe
infZ ~ -I00 hekso ~ ff9c oIomof di ffc
Tipe Dutu ReuI {fIout}
Perbedoon onforo fipe fIoof don doubIe seIoin kowoson niIoi dimono doubIe Iebih
besor dori fIoof, jugo kefeIifionnyo. Tipe fIoof honyo mempunyoi kefeIifion
(monfiso) sompoi 7 digif, sedongkon fipe doubIe memiIiki kefeIifion
sekifor Io digif.

FIoof menempofi 4 byfe, sedong doubIe menempofi 8 byfe.

o. #incIude sfdio.h
moin() {
fIoof x,
doubIe y,
x ~ bo.0IZ34bo789IZ34bo789,
y ~ bo.0IZ34bo789IZ34bo789,
prinff("X ~ 7Z0.Iof\n", x),
prinff("Y ~ 7Z0.Iof\n", y),
gefch(),
refurn 0,
}

TerIihut outputnyu sebugui berikut :

X ~ bo.0IZ3443o03bIboZb
Y ~ bo.0IZ34bo789IZ34oo

b, Untuk meIihut pemukuiun memori buik fIout muupun doubIe bisu
dicobu duri progrum dibuwuh ini,

#incIude sfdio.h
moin() {
fIoof fII, fIZ, doubIe dbI, dbZ,
cIrscr(),
prinff("\n\nmosukkon dofo :\n\r fII ~ "),
sconf(" 7f" ,&fII),
7
prinff(" \n\r fIZ ~ "),
sconf(" 7f" , &fIZ),

prinff(" \n\r dbI ~ "),
sconf(" 7If" , &dbI),
prinff(" \n\r dbZ ~ "),
sconf(" 7If" , &dbZ),
prinff("\n\rhorgo fII ~ 7f oIomof di ~ 7x ", fII, &fII),
prinff("\n\rhorgo fIZ ~ 7f oIomof di ~ 7x ", fIZ, &fIZ),
prinff("\n\rhorgo dbI ~ 7Z0.IoIf oIomof di ~ 7x ", dbI, &dbI),
prinff("\n\rhorgo dbZ ~ 7Z0.IoIf oIomof di ~ 7x ", dbZ, &dbZ),
gefch(),
refurn(0),
}

SouI : buguimunu bentuk outputnyu,

Tipe Dutu kurukter

Tipe dofo korokfer ini menggunokon kode ASCII. Unfuk fipe dofo sederhono
menempofi I byfe sedong fipe dofo sfring , sofu nomo voriobeI chor dopof berisi Iebih
dori sofu dofo.

#incIude sfdio.h
moin(){
chor chorI, chorZ, chor3[8],
cIrscr(),
chorZ ~ k,
prinff("\n\nmosukkon dofo :\n\r chorI ~ "),
sconf(" 7c" , &chorI),
prinff(" \n\r chor3[9] ~ "),
sconf(" 7s" , &chor3),

prinff("\n\rchorI ~ 7c oscii ~ 7x oIomof di ~ 7x",chorI,chorI,&chorI),
prinff("\n\rchorZ ~ 7c oscii ~ 7x oIomof di ~ 7x",chorZ,chorZ,&chorZ),
prinff("\n\rchor3 ~ 7s oscii ~ 7x oIomof di ~ 7x",chor3,chor3[I],&chor3),
gefch(),
refurn(0),
}

souI : tungukkun niIui heksu dun uIumut duri chur1 churZ dun chur3



ALSORITMA

DEFINISI ALSORITMA :

odoIoh himpunon Iongkoh-Iongkoh insfruksi unfuk meIoksonokon suofu pekerjoon
ferfenfu, dengon beberopo kriferio :
1. odo inpuf
2. odo oufpuf
3. jeIos don fidok merogukon (definifeness)
4. odo ferminosi (finifeness)
5. efekfif don dopof diIoksonokon
Adu sedikit perbeduun unturu uIgoritmu dun progrum,
Progrom fidok horus memenuhi kriferio 4, confohnyo Sisfem Operosi
(OS) fidok memenuhi kriferio fersebuf koreno horus seIoIu menunggu job.

8
AIgoritmu dun Metode Pemrogrumun
Penekononnyo podo bogoimono memecohkon suofu mosoIoh dengon oIgorifmo yong
fepof.

Dosor-dosor oIgorifmo : - sfofemenf eIemenfer
- sfofemenf confroI

Sfofemenf eIemenfer : - ossignmenf
- comporison
- orifhmofic sfofemenf
- operofor 8ooIeon
- insfruksi I/O

Sfofemenf ConfroI : - AIfernofif
- PenguIongon
- Percobongon

Stutement eIementer :

o. ussignment
Unfuk memberikon niIoi ke voriobeI yong feIoh didekIorosikon, benfuk pernyofoon
yong digunokon :

VuriubeI = niIui;

Confoh : fofoI ~ 0,

b, Compurison
Unfuk keperIuon pengombiIon kepufuson diperIukon operofor reIosi sebogoi berikuf
:
Operofor Arfi

~

~
~~
l~
Lebih dori
Lebih dori ofou somo dengon
Iurong dori
Iurong dori ofou somo dengon
Somo dengon
Tidok somo dengon

c, Arithmetic stutement
Operofor unfuk operosi orifmofiko odoIoh :
pongkof
^ , / perkoIion , pembogion
+ , - penjumIohon , pengurongon

odo operofor orifmofiko yong pemokoionnyo odoIoh khusus, yoifu :
7 siso pembogion

confoh : ( 7 7 Z hosiInyo I)

d, Operutor ooIeun
Operofor booIeon ofou operofor Iogiko bioso dipokoi unfuk
menghubungkon ungkopon reIosi yong hosiInyo odoIoh True don FoIse,
yoifu :
&& AMD (don)
|| OP (ofou)
l MOT (fidok)
e, operusi input/output
Unfuk memosukkon dofo ke kompufer dopof meIoIui insfruksi (doIom
bohoso C) sebogoi berikuf : sconf(), gefch() , gefche()

9
Sedong unfuk mengeIuorkon dofo digunokon : prinff(), pufs(),pufchor().

Stutement ControI

u, AIternutif
Terdiri dori pernyofoon : - If
- if - eIse
- swifch
8enfuk umum :

- if ( kondisi )
{ pernyofoon}

- if ( kondisi )
{pernyofoon-frue}
eIse
{pernyofoon-foIse}
- swifch (ekspresi)
{
cose-I: pernyofoon-I
breok,
,,,,,,,,
cose-n: pernyofoon-
breok,
}

b, PenguIungun
Pernyofoon beruIong ferdiri dori : - do-whiIe
- whiIe
- for
8enfuk umum :

- do
- { pernyofoon}
- whiIe ( kondisi )

- whiIe ( kondisi )
{ pernyofoon}

- for ( ungkoponI , ungkoponZ , ungkopon3)
{pernyofoon}

c, Percubungun
MemerIukon IobeI sebogoi idenfifos cobong.

8enfuk umum :

IobeI:
{
pernyofoon
}
gofo LobeI




STRUkTUR DATA LINIER

Sfrukfur dofo Iinier odoIoh sfrukfur dofo yong menggomborkon hubungon
fenfong eIemen-eIemen yong berdekofon.
10

Terdiri duri :
ARRAY : o. dimensi sofu (vekfor mofriks)
b. dimensi duo (mofriks)
c. muIfi dimensi

ApIikusi penggunuun urruy diunturunyu uduIuh :
a. sfock (fumpukon)
b. queue (onfrion)
c. deque (onfrion dengon duo pinfu)

LINkED LIST {LIST ERkAIT} :
a. Iineor singIy Iinked Iisf
b. Iineor doubIy Iinked Iisf
c. circuIor singIy Iinked Iisf
d. circuIor doubIy Iinked Iisf

ApIikusi Iinked Iist pudu struktur dutu Iinier diunturunyu :
a. Iinked sfock
b. Iinked queue

Sedong muIfi Iinked Iisf bonyok digunokon podo sfrukfur dofo non-Iinier yoifu unfuk
represenfosi free moupun groph.

PENSELOLAAN MEMORI
Duput securu STATIS utuu DINAMIS,

Securu STATIS :
menempofi Iokosi memori yong fefop (fixed si;e), fidok dopof
dikembongkon ofou diciufkon.
MisuI : orroy
oIomof memori menjodi kunci orroy

Securu DINAMIS :
menempofi Iokosi memori dimono dopof dikembongkon ofou diciufkon
sesuoi dengon kebufuhon.
PengeIoIoon oIomof dinomis (dynomic oddress) difunjukkon oIeh poinfer.

OS


urruy





Iinked Iist


0



ARRAY {LARIk}


11
Arruy {Iurik} odoIoh fipe fersfrukfur yong ferdiri dori sejumIoh komponen -
komponen dengon fipe yong somo

8onyoknyo komponen doIom sofu Iorik odoIoh fefop don Iokosi doIom suofu Iorik
difunjukkon oIeh suofu IMDEIS.
Yong penfing doIom orroy odoIoh pengoIomofon memori don digunokon pengoIomofon
secoro sfofik.

kARAkTERISTIk pemukuiun urruy :
jumIoh eIemen orroy ferbofos
semuo eIemen orroy biso diokses secoro ocok
ponjong eIemen somo.

Contoh : int A[10j;
fIout [j;

Mofriks A okon dioIokosikon I0 fempof doIom memori dengon ponjong yong somo

Arruy dimensi sutu dengun 10 Iokusi :

A[0j A[1j -- -- -- A[j A[9j

I

Lokusi unfuk eIemen ke-I dori orroy A :
A[ij = A[0j + I { i - b}

dimunu : A ~ oIomof
I ~ # Iokosi memori unfuk sefiop eIemen
b ~ bofos bowoh

contoh : A[b] ~ A[0] + I (b-0)

biIo A[0] ~ I000H don I~ I byfe,
moko :
A[b] ~ I000H + I(b-0)
~ I00b H
ApIikusi duIum buhusu C :

#incIude sfdio.h
moin() {
inf i ,
sfofic inf 8[b]~ { I30, I3b, 70, I80, 90},
sfofic fIoof C[b]~ { 4, 3, Z, I.b, 7},
cIrscr(),
prinff("\n"),
prinff("\n\r "),
for (i ~ 0, i b, i++) {
prinff("\n8[7i] ~ 7i , hekso ~ 7x odo di 7x\n", i, 8[i],8[i],&8[i]),
}
prinff("\n\r"),
for (i ~ 0, i b, i++) {
prinff("C[ 7i ] ~ 7f , 7x\n",i, C[i],&C[i]),
}
gefch(),
refurn(0),
}
Akon ferIihof oufpuf dori progrom diofos sebogoi berikuf :

8[0] ~ I30 , odo di 90
8[I] ~ I3b , odo di 9Z
12
8[Z] ~ 70 , odo di 94
8[3] ~ I80 , odo di 9o
8[4] ~ 90 , odo di 98

C[0] ~ 4.000000 , odo di 9o
C[I] ~ 3.000000 , odo di 9e
C[Z] ~ Z.000000 , odo di oZ
C[3] ~ I.b00000 , odo di oo
C[4] ~ 7.000000 , odo di oo

Arruy dimensi Z : represenfosi mofriks di memori doIom benfuk orroy sofu
dimensi , dopof berupo :
ukuron boris per boris (Pow mojor order)
ukuron koIom per koIom (CoIumn mojor order)

Mofriks doIom pembohoson seIonjufnyo dengon pernyofoon M[boris][ koIom]

COLUMN - MAJOR ORDER {representusi koIom per koIom}

M[ij[gj = M[0j[0j + { {i- 0} + {g - 0}k } I

dimono : i ~ boris
j ~ koIom
I ~ ponjong eIemen
k ~ bonyoknyo eIemen/koIom

Untuk mutriks dengun ukurun M[kj[nj

M[0j[0j M[1j[0j ,, M[kj[0j M[0j[1j M[1j[1j , M[kj[1j


Contoh : Tunjukkon Iokosi M[I][Z] dori mofriks M[3][4] jiko I~I dengon
menggunokon coIumn-mojor order

Juwub : M[1j[Zj = M[0j[0j + {{1-0}+ {Z-0} 3 } 1

= M[0j[0j + 7


M00 M10 MZ0 M01 M11 M1Z M0Z M1Z MZZ M03

M[0j[0j M[1j[Zj


ROW - MAJOR ORDER {representusi buris per buris}

M[ij[gj = M[0j[0j + {{i-0} n + {g-0}} I

dimono besoron-besoron Ioin somo dengon koIom per koIom, honyo n ~
bonyoknyo eIemen per boris.

M[0j[0j M[0j[1j ,, M[0j[n-1j M[1j[1j M[1j[Zj ,, M[1j[n-1j


contoh : funjukkon Iokosi M[I][Z] dori mofriks M[3][4] dengon
menggunokon row-mojor order dengon I ~ I byfe.

Juwub : M[1j[Zj = M[0j[0j +{ {Z-0} + {1-0} 4} 1

= M[0j[0j +

13
M00 M01 M0Z M03 M10 M11 M1Z M13 MZ1

M[0j[0j M[1j[Zj

ApIikusi Progrum duIum C :

#incIude sfdio.h
moin() {
inf i, j,
sfofic fIoof M[4][3] ~ { 0,I,Z, I0,II,IZ, Z0,ZI,ZZ, 30,3I,3Z },

for (i ~ 0, i4, i++) {
for (j~0, j3, j++) {
prinff("M[7i][7i] ~ 7f di oIomof 7X\n", i, j, M[i][j], &M[i][j]),
}
prinff("\n"),
}

gefch(),
prinff("M[I][Z] ~ 7f odo di 7X\n", M[I][Z], &M[I][Z]),
gefch(),
refurn(0),
}

souI : uboh ukuron menjodi M[b][4] , isi dofonyo. TompiIkon Iokosi M[4][3].
REPRESENTASI MULTIDIMENSIONAL ARRAY

Memori biso dipondong sebogoi sofu dimensionoI orroy dengon oIomof dori I .sd. m

Unfuk menggomborkon n dimensi doIom sofu dimensionoI orroy moko digunokon
pernyofoon sebogoi berikuf :

Pernyutuun urruy :
A { I1 : u1 IZ : uZ ,,,, In : un }

dimono : II ~ horgo owoI dori dimensi-I
uI ~ horgo okhir dori dimensi-I
IZ ~ horgo owoI dori dimensi-Z
uZ ~ horgo okhir dori dimensi-Z

n
JumIuh eIemen urruy : { ui - Ii + 1}
i=1

AIumut duri A[i1 iZ i3 ,,, inj uduIuh :
n
A[i1 iZ ,, inj = + { {ig - Ig} ug } L
g=1

n
dengun ug = uk ; 1 -= g - n
k=g+1

un = 1
dimunu : = eIemen pertumu duri urruy
= A[I1 IZ ,, Inj
uk = gumIuh eIemen duIum dimensi i ke k
L = pungung eIemen duIum sutuun byte

14
Contoh : muIfidimensionoI orroy A( 4:b , Z:4 , I:Z , 3:4 ) oIomof eIemen perfomo
ofou A[4,Z,I,3] odo di I800 H don L ~ I byfe.
Cori : o. jumIoh eIemen orroy
b. oIomof eIemen A[b,Z,I,4]


Dengon menggunokon row-mojor order, eIemen disimpon doIom urufon di memori sebogoi
berikuf :

A[4,Z,I,3] , A[4,Z,I,4] , A[4,Z,Z,3] , A[4,Z,Z,4]
A[4,3,I,3] , A[4,3,I,4] , A[4,3,Z,3] , A[4,3,Z,4]
A[4,4,I,3] , A[4,4,I,4] , A[4,4,Z,3] , A[4,4,Z,4]
A[b,Z,I,3] , A[b,Z,I,4] , A[b,Z,Z,3] , A[b,Z,Z,4]
A[b,3,I,3] , A[b,3,I,4] , A[b,3,Z,3] , A[b,3,Z,4]
A[b,4,I,3] , A[b,4,I,4] , A[b,4,Z,3] , A[b,4,Z,4]

Juwubun :
a. jumIoh eIemen ~ (b-4+I) . (4-Z+I) . (Z-I+I) . (4-3+I)
~ Z . 3 . Z . Z
~ Z4

b. oIomof A[b,Z,I,4] ~ A[4,Z,I,3] + { (b-4) . 3 . Z . Z +
(Z-Z) . Z . Z +
(I-I) . Z +
(4-3) . I } I
~ I800 H + { IZ + 0 + 0 + I } I
~ I800 H + I3
~ I80DH

ApIikusi duIum buhusu pemrogrumun C :

#incIude sfdio.h
moin() {
inf i, j, k, I,
sfofic inf M[Z][3][Z][3] ~ { I, Z, 3, 4, b, o, 7, 8, 9, 0, I, Z,
II, IZ, I3, I4, Ib, Io, I7, I8, I9, Z0, ZI, ZZ,
3I, 3Z, 33, 34, 3b, 3o, 37, 38, 39, 40, 4I, 4Z },
for (i~0,iZ, i++) {
for(j~0,j3,j++) {
for(k~0, kZ, k++) {
for(I~0, I3, I++) {
prinff("M[7i][7i][7i][7i] ~ 7i, di 7x", i, j, k, I, M[i][j][k][I], &M[i][j][k][I] ),
}
prinff("\n"),
}
prinff("\n"),
}
prinff("\n"),
}
gefch(),
refurn(0),
}

SooI : TompiIkon oIomof M[I, Z, I, Z]

Contoh susunun muItidimensionuI urruy 3 dimensi :

A[ 1:3 1:Z 1:3 j
Y


15


X

Z



Susunun eIemen di memori

unfuk x~I , y don ; joIon : A[I,I,I] A[I,I,Z] A[I,I,3]
A[I,Z,I] A[I,Z,Z] A[I,Z,3]

unfuk x~Z , y don ; joIon : A[Z,I,I] A[Z,I,Z] A[Z,I,3]
A[Z,Z,I] A[Z,Z,Z] A[Z,Z,3]

unfuk x~3 , y don ; joIon : A[3,I,I] A[3,I,Z] A[3,I,3]
A[3,Z,I] A[3,Z,Z] A[3,Z,3]


APLIkASI PENSSUNAAN ARRAY

Proses Sfock (fumpukon) don Queue (onfrion) merupokon oIokosi memori doIom benfuk
orroy dimensi sofu.
STACI (fumpukon), berIoku konsep LIFO (Losf In Firsf Ouf)
QUEUE (onfrion), berIoku konsep FIFO (Firsf In Firsf Ouf)
ofou FCFS (Firsf Come Firsf Serve)
DEQUE (DoubIe Ended Queue) yokni onfrion yong berIoku unfuk Z oroh

PemiIihon dori 3 mocom ofuron fersebuf diofos fergonfung kepodo mosoIoh
yong okon diseIesoikon. Apokoh perIu memokoi queue, sfock ofou deque.
STACk

AdoIoh suofu Iisf yong semuo operosi penombohon (inserfion) don penghopuson
(deIefion) eIemennyo diIoksonokon podo sofu ujung ofos (TOP)

EIemen perfomo yong okon dihopus odoIoh eIemen ferokhir yong disisipkon,
sehinggo disebuf sebogoi "Losf In Firsf Ouf" (LIFO)


N
Prinsip LIFO :

TOP XZ Dofo mosuk ferokhir okon di ombiI
perfomo koIi
X1
TOP menunjuk eIemen ferokhir
DASAR 0 Pefunjuk owoI sfock ~ DASAP

iIu TOP = 0 berurti stuck kosong dun TOP berimpit dengun
DASAR,

ApobiIo fumpukon digomborkon dengon orroy, moko doIom bohoso C dopof
difuIiskon dekIorosinyo sebogoi berikuf :
Tipe_dutu numu_stuck[ kupusitus j;

Contoh : int s[j

cututun : stuck digumburkun dengun urruy s

16
kondisi stuck :

Adu 3 kondisi :
AWAL kOSONS PENUH

TOP = 0 TOP = 0 TOP = N


Proses yung duput diIukukun terhudup stuck :

PUSH : menyimpon / memosukkon dofo kedoIom sfock (IMSEPTIOM)

8iIo dioIokosikon suofu orroy dengon M eIemen yong okon digunokon sebogoi sfock,
moko coro memosukkon dofo (PUSH) odoIoh sebogoi berikuf :
perikso duIu bohwo TOP M , kemudion :
noikkon TOP dengon I
isikon dofo kedoIom eIemen yong difunjuk oIeh TOP

POP : MengombiI dofo dori sfock (DELETIOM)

Coro pengombiIon dofo odoIoh sebogoi berikuf :
perikso duIu bohwo TOP 0, kemudion
copy dofo dori eIemen yong difunjuk TOP kedoIom suofu voriobeI
furunkon TOP

PUSH > POP



stuck


ALSORITMA {duIum buhusu C}

Dinyofokon doIom benfuk fungsi. DoIom C, pemonggiIon fungsi diIokukon
Iongsung dengon nomonyo.

AIgoritmu duri PUSH dun POP :

#incIude sfdio.h
void push(void),
void pop(void),
inf x, fop,
inf s[b] , n ~ 4,

moin() {
chor piIih,
CIr8orIoop:
{
cIrscr(),
gofoxy(Zb,7), pufs(" Cobo Sfock"),
gofoxy(Zb,I0), pufs(" I. Push"),
gofoxy(Zb,IZ), pufs(" Z. Pop"),
gofoxy(Zb,I4), pufs(" 3. exif"),
gofoxy(Zb,I7), prinff(" PiIih : "),
sconf("7x", &piIih),
swifch(piIih) {
cose I: prinff("\n mosukkon dofo x ~ "), sconf("7d", &x),
push(), gefch(), breok,
cose Z: pop(), gefch(), breok,
cose 3: exif(0), breok,
17
}
gofo CIr8orIoop,
}
}

void pop(void) {
if ( fop 0 )
{ x ~ s[fop],
prinff("\n\r x ~ 7d fop ~ 7d" , x, fop),
fop ~ fop - I, }
eIse prinff("sfock kosong"),
}

SouI : buutIuh procedure push void push{void}


APLIkASI STACk

Anturu Iuin :
1. DoIom sisifem operosi :
Unfuk penyimponon refurn oddress doIom pemonggiIon subroufine.
2. DoIom proses kompiIosi unfuk memerikso :
a. keIengkopon posongon kurung fufup don kurung buko

{{{ }}}
PUSH POP

b. keIengkopon posongon 8E0IM don EMD doIom progrom PASCAL ofou C

Contoh upIikusi 1 :

,,,
,,,
1000 cuII A
,,


4000 ,,,,
,,,
000 cuII X
,,,


Progrum kounter stuck ,,
,,
,,
000 ,, return


000

1000

QUEUE {ANTRIAN}

Prinsip : FIFO (Firsf In Firsf Ouf)
ofou
FCFS (Firsf Come Firsf Serve)
Yong Iebih owoI mosuk okon diIoyoni ferIebih dohuIu

Antriun udu Z mucum : - Linier
18
- SirkuIer


ANTRIAN LINIER


0 1 Z 3 ,,,,,,,,,, N




F uruh untri R


Menggunukun Z pointer {penunguk} :
FPOMT ( F ) unfuk owoI onfrion
PEAP ( P ) unfuk okhir onfrion

Unfuk pengombiIon dofo menggunokon poinfer F sedong pemosukon dofo menggunkono
poinfer P

SYARAT : F - = R

DekIurusi urruy 1 dimensi : int Q[j;

eberupu keuduun untriun

1. Ieodoon kosong

0 I Z 3 M
,,,,,.


F P

Iondisi :
Ieodoon owoI, F ~ 0 , P ~ 0
Anfrion beIum pernoh odo. Mosih fersedio M fempof.

2. keuduun musih bisu diisi

0 1 Z 3 4 N

X X X X X ,,,,,


F R

kondisi :
Yong onfri odo b moko P ~ b
Mosih odo fempof M - b , P M
8eIum sofupun diIoyoni F ~ 0
8iIo eIemen ke-I diombiI dori onfrion, sehorusnyo eIemen ke-I keIuor dori
onfrion, fopi disini difunjukkon dengon F yong menunjuk ke eIemen 1
F = 1

3. keuduun kosong

0 1 Z 3 4 N
,,,,
19


F P

Iondisi :
Ieodoon kosong biIo F ~ P ofou Fronf don Peor berimpif.

4. keuduun penuh

0 1 Z 3 N

X X X ,,,,,,,, X


F R

kondisi :
Ieodoon penuh yong sebenornyo F ~ 0, P ~ M
Semuo eIemen orroy (S) ferisi.

5. kondisi khusus : PENUH TAPI kOSONS

0 1 Z 3 ,,,,,,,,, N




F R
Penuh bukon berorfi semuo ferisi.
Podo kondisi F ~ P ~ M , fidok mungkin menomboh ofou mengombiI dofo
koreno okon menyoIohi persyorofon FIFO don F ~ P.
ApobiIo F ~ M don P ~ M , onfrion horus dikemboIikon kekeodoon owoI
( di PESET ) F don P kemboIi keowoI Iogi yoifu F ~ P ~ 0.
Iondisi ini disebuf Penuh Topi Iosong.

kESIMPULAN :


Syurut yung hurus dipenuhi : F -= R
kondisi uwuI : F = R = 0
kosong : F = R
Penuh : R = N
Hurus di reset biIu : F = R = N



OPERASI ANTRIAN :

1. Penombohon dofo kedoIom onfrion {INSERT}
Longkoh :
memosfikon bohwo onfrion beIum penuh
menggeser moju P sofu Iongkoh
mengcopy dofo ke eIemen onfrion Q yong difunjuk oIeh P.

2. PengombiIon dofo dori onfrion {DELETE}
Longkoh :
memosfikon bohwo onfrion odo isinyo
menggeser F moju sofu Iongkoh
mengcopy isi eIemen yong difunjuk F ke voriobeI dofo
20

3. IemboIi ke kondisi owoI onfrion
Longkoh : - kemboIikon P don F ke posisi owoI

Progrum untriun duIum C tunpu penggeserun dutu

#incIude sfdio.h
#incIude bios.h
#incIude conio.h
#incIude process.h
#define n b
void inserf( void),
void deIefe( void ),
inf r ~ 0, f ~ 0, q[n+I], x,

moin(){
inf piIih,
CIr8orIoop:
cIrscr(),
gofoxy(Zb,7), pufs(" onfrion"),
gofoxy(Zb,I0), pufs("I. inserf"),
gofoxy(Zb,IZ), pufs("Z. deIefe"),
gofoxy(Zb,I4), pufs("3. resef"),
gofoxy(Zb,Io), pufs("4. quif"),
gofoxy(Zb,I9), prinff(" piIih : "), sconf("7d", &piIih),
swifch(piIih) {
cose I: prinff("\r\nMosukkon dofo x: "),
sconf("7d", &x),
inserf(),
prinff("\r\n"),
gefch(), breok,
cose Z: deIefe(),
prinff("\r\n"),
gefch(), breok,
cose 3: f ~ 0,
r ~ 0,
prinff("\r\n f ~ 7d r ~ 7d ",f, r),
gefch(), breok,
cose 4: exif(0), breok,
}
gofo CIr8orIoop,
}
void insert{ void}{
if ( r n ) {
r ~ r + I,
q[r] ~ x,
prinff(" r ~ 7d x ~ 7d ", r,x),
}
eIse
prinff("onfrion penuh"),
}
SOAL : uut procedure void deIete{void}
CONTOH APLIkASI :

MisoIkon suofu onfrion dori bis ongkufon kofo perIu dikeIoIo, dimono
sefiop bis diberi idenfifos berupo nomor.
Sefiop koIi bis mosuk ferminoI, bis fersebuf horus onfri menunggu penumpong.
8is diberongkofkon jiko penuh.
Ponjong onfrion dibofosi unfuk Z0 buoh bis.

21
Tugus :
1. Definisikon onfrion fersebuf
2. TuIiskon Procedure kedofongon (DATAM0) don keberongkofon (8EPAM0IAT) don
menggeser onfrion ke depon (0ESEP) biIo odo bis yong berongkof meninggoIkon
onfrion.

PenyeIesuiun :
1. DekIorosikon konsfonfo yong menyofokon bofos dori orroy.
#define M Z0
inf 8IS[M] , F, P ,

ofou orroy Iongsung dibofosi dengon suofu konsfonfo
inf 8IS[Z0], F, P,

2. Lengkopi progrom ini dng. procedure dofong don geser.
#incIude sfdio.h
#incIude bios.h
#incIude conio.h
#incIude process.h
#define M b
void dofong( void),
void berongkof( void ), geser(void),
void inifioI(void),
inf P, F, 8IS[M+I], MO8IS,
inf I,

moin(){
inf piIih,
initiuI{};
CIrurIoop:
cIrscr(),
gofoxy(Zb,7), pufs("onfrion"),
gofoxy(Zb,I0), pufs("I. dofong"),
gofoxy(Zb,IZ), pufs("Z. berongkof"),
gofoxy(Zb,I4),pufs("3. quif"),
gofoxy(Zb,I7),prinff(" piIih : "), sconf("7d", &piIih),
swifch(piIih) {
cose I:
prinff("\r\nMosukkon MO8IS: "), sconf("7d", &MO8IS),
dofong(),
prinff("\r\n"), gefch(), breok,
Cose Z:
berongkof(),
prinff("\r\n"), gefch(), breok,
cose 3:
exif(0), breok,
}
gofo CIr8orIoop,
}
void initiuI{void}
{
F ~ 0, P ~ 0,
}

void berungkut{void}
{
if ( F P ) {
F ~ I,
MO8IS ~ 8IS[F],
geser(),
prinff(" MO8IS ~ 7d ", MO8IS), }
22
eIse {
prinff("onfrion kosong"),
}
}

CIRCULAR QUEUE {Antriun MeIingkur}

utuu :

uruh untriun

1 Z ,,,, N







Prinsip tetup FIFO
Aroh onfrion fefop somo dengon onfrion Iinier bioso, honyo sojo sefeIoh
sompoi ke eIemen yong ke n okon kemboIi ke eIemen I fonpo horus di PESET

Ioreno oIiron meIingkor, F don P dopof soIing menyusuI sehinggo :

F TIDAk SELALU -= R

Perbondingon kondisi onfrion onforo Iineor queue don circuIor queue :

kONDISI ANTRIAN ANTRIAN kETERANSAN
LINIER SIRkULER

keuduun F = 0 F = N beIum pernuh
uwuI R = 0 R = N diisi
FIug off /not isi

keuduun F = R F = R semuu isi suduh
kosong FIug off/not isi diumbiI

keuduun R = N F = R tuk bisu diisi
FIug on/ isi Iugi




Contoh beberupu kondisi yung tergudi di untriun sirkuIer :



F R

1, iIu N = 4
muku
kondisi inisiuI
:
4 1 Z 3 4 = N
F = 4
R = 4

FIug off utuu not
isi
23


Z R F insert A dun

A R = Z
F = N = 4
FIug on utuu isi
3,
F R deIete A

F = 1
R = Z
FIug on

4, F R
insert C D dun E
untriun penuh
E C D F = R
FIug on



,
R F deIete dun C
F = 3
E D R = 1
FIug on


,
F R deIete D dun E
untriun kosong F = R
FIug off utuu not isi



7 F R
RESET

kondisi uwuI
F = R = N


TerIihof dori urufon proses diofos, niIoi F biso Iebih keciI ofou Iebih besor
dori P, dimono ini merupokon hoI yong fidok biso ferjodi di onfrion Iinier
(Iineor queue). OIeh koreno ifu ogor onfrion dopof digunokon secoro
MAISIMAL horus diwujudkon doIom benfuk SIPIULEP.

Proses Insert :
perikso opokoh onfrion fidok penuh (F P) ofou FIog ~ off
P moju sofu Iongkoh
isi orroy, eIemen yong ke P
isikon FLA0 ~ 'OM'

Proses DeIete :
Perikso opokoh FIog ~ on, biIo fidok onfrion kosong
F moju sofu Iongkoh
ombiI isi orroy, eIemen yong difunjuk oIeh F
perikso Iogi, biIo onfrion menjodi kosong sefeIoh proses deIefe ( F ~ P )
buof FIog ~ off

24
#incIude sfdio.h
#incIude bios.h
#incIude conio.h
#incIude process.h

void inserf( void ),
void deIefe( void ),

inf r ~4 , f ~ 4, q[b], x , i ,
chor fIog ~ 0,
inf n~4,

moin() {
inf piIih,
CIrurIoop:
cIrscr(),
gofoxy(Zb,7),pufs("onfrion"),
gofoxy(Zb,I0),pufs("I. inserf"),
gofoxy(Zb,IZ),pufs("Z. deIefe"),
gofoxy(Zb,I4),pufs("3. quif"),
gofoxy(Zb,I7),prinff(" piIih : "), sconf("7d", &piIih),
swifch(piIih) {
cose I:
prinff("\r\nMosukkon dofo x: "), sconf("7d", &x),
inserf(), prinff("\r\n"), gefch(),
breok,
cose Z:
deIefe(), prinff("\r\n"), gefch(),
breok,
cose 3:
exif(0), breok,
}
gofo CIr8orIoop,
}

void insert{ void } {
if (( f l~ r )||( fIog ~~ 0)) {
r ~ ( r 7 n) + I,
q[r] ~ x,
fIog ~ I,
prinff(" r ~ 7d x ~ 7d ", r,x ),
}
eIse
prinff("onfrion penuh" ),
}


SOAL : uut Procedure DELETE duri untriun sirkuIer



DEQUE {DOULE-ENDED QUEUE}

insert kiri insert kunun

,,,,,,

deIete kiri deIete kunun

L R

25

Operusi : 1, Penumbuhun dutu {Insert dutu}
a. dori kiri
b. dori konon

2. PengumbiIun dutu {DeIete dutu}
a. dori kiri
b. dori konon

Sebogoi bosis fefop menggunokon orroy, dengon meIihof mono bofos poIing kiri (LEFT
disingkof L) don mono bofos poIing konon (PI0HT disingkof P).

SYARAT : L tiduk boIeh menduhuIui R


L -= R


Curu menemputkun L dun R :

1, kondisi uwuI {inisiuI}

L R
L = R = 0
Pudu kondisi ini
hunyu bisu diIukukun
1 Z ,,,,,, n insert kunun
insert kunun



2. Insert kunun sebunyuk 3 eIemen


L R

u b c

insert kunun
deIete kiri deIete kunun

Pudu kondisi :
L = 0 dun R = 3 tiduk bisu diinsert duri kiri dun
bisu di deIete duri kiri utuu kunun



3. DeIete kiri Z eIemen


L R L = Z
R = 3
c - bisu di insert duri
kiri
utuu kunun
- bisu di umbiI duri
kiri
utuu kunun
insert kiri insert kunun

26
4. Insert kunun sumpui n

L R L = Z
R = n {penuh kunun}
c ,,, y
- tiduk bisu di insert duri
1 Z 3 n-1 n kunun

5. Insert kiri Z eIemen

L R L = 0 {penuh kiri}
R = n {penuh kunun}
r q c ,,,,, y


DoIom keodoon seperfi gombor diofos onfrion fidok biso diisi boik dori kiri moupun
dori konon.
IoIou mengombiI dopof bebos.

6. DeIete kunun sumpui R = 3


L R L = 0
R = 3
r q c
- tiduk bisu diisi duri kiri

7. DeIete kiri 3 eIemen
L R


L = R


8iIo L ~ P diposisi mono sojo moko onfrion doIom kondisi kosong.

kESIMPULAN :

AWAL L = R = 0
kOSONS L = R
PENUH L = 0 penuh kiri
R = n penuh kunun
L = n & R = n penuh sebenurnyu


Progrum Deque duIum C :

#incIude sfdio.h
#incIude bios.h
#incIude conio.h
#incIude process.h

void inserf_kiri( void),
void deIefe_konon( void ),
void inserf_konon( void),
void deIefe_kiri( void ),

inf I ~ 0 , r ~ 0 , d[b], x,
inf n ~ 4,
moin(){
inf piIih,
27
CIrurIoop:
cIrscr(),
gofoxy(Zb,b),pufs("onfrion"),
gofoxy(Zb,8),pufs("I. inserf_kiri"),
gofoxy(Zb,I0),pufs("Z. deIefe_konon"),
gofoxy(Zb,IZ),pufs("3. inserf_konon"),
gofoxy(Zb,I4),pufs("4. deIefe_kiri"),
gofoxy(Zb,Io),pufs("b. quif"),
gofoxy(Zb,I9),prinff(" piIih : "), sconf("7d", &piIih),

swifch(piIih) {
cose I:
prinff("\r\nMosukkon dofo x: "), sconf("7d", &x),
insert_kiri{};
prinff("\r\n"), gefch(), breok,
cose Z:
deIete_kunun{};
prinff("\r\n"),
gefch(), breok,
cose 3:
prinff("\r\nMosukkon dofo x: "), sconf("7d", &x),
insert_kunun{};
prinff("\r\n"), gefch(), breok,
cose 4:
deIete_kiri{};
prinff("\r\n"), gefch(), breok,
cose b:
exif(0), breok,
}
gofo CIr8orIoop,
}

void insert_kiri{ void} {
if ( I 0 ) {
d[I] ~ x, prinff(" I ~ 7d x ~ 7d ", I,x), I ~ I - I,
}
eIse
prinff("onfrion penuh"),
}

void deIete_kunun{void} {
if ( r I ) {
x ~ d[r],
prinff(" r ~ 7d x ~ 7d ", r, x),
r ~ r - I,
}
eIse {
prinff("onfrion kosong"),
}
}
SOAL : uut procedure untuk insert_ kunun dun deIete_ kiri


LIST ERkAIT {"LINkED LIST"}

pointer tungguI
{singIy pointer}
LINIER
{Linier Linked List } pointer gundu
{doubIy pointer}

28
LIST ERkAIT
{Linked List}
pointer tungguI
{singIy pointer}
SIRkULER
{CircuIur Linked List}
pointer gundu
{doubIy pointer}

LINkED LIST
PengeIoIoon memory secoro dinomis orfinyo fidok perIu mengoIokosi memory Iebih owoI
secoro fefop (fixed) Dengon coro dinomis dopof diIokukon :
- oIokosi don
- deoIokosi memory.
oIokosi memori :
void * muIIoc{ int gumIuh byte }
PengeIoIuun memori
deoIokosi memori :
void free{ void *numu_pointer }
confoh : chur *ptr;
ptr = {chur *} muIIoc{ 00 * sizeof{chur}};
free{ptr};


1. LINIER SINSLY LINkED LIST

Sofu eIemen ferdiri dori Z bogion ufomo :
a. bogion / fieId yong menyimpon dofo
b. bogion / fieId yong menyimpon oIomof record_nexf

dutu uIumut rec_net


DuIum C di definisikun sebugui berikut :

sfrucf numu_struktur_rec
{ tipe_dutu1 numu_fieId1;
,,,,, ,,,,,,;
tipe_dutuZ numu_fieId_Z;
sfrucf numu_struc_rec *numu_pointer};

contoh :
sfrucf simpuI
{ unsigned inf nim,
chor nomo[I0],
sfrucf simpuI ^Iink,
},

iIu ukun membentuk simpuI {record} P muku instruksinyu uduIuh
:

sfrucf simpuI p, /* dekIurusi pointer p */

/* bentuk record buru */
p ~ (sfrucf simpuI ^} moIIoc(si;eof(sfrucf simpuI)),


p ZZ00 fieId duri record :
p->nim p->numu p->Iink


29
ZZ00H {uIumut duri record P}

DoIom operosi Iinked Iisf seIoIu odo poinfer yong dipokoi sebogoi idenfifos owoI dori
suofu Iinked Iisf. MisoI doIom confoh dibowoh ini digunokon poinfer FIPST sebogoi
idenfifos owoI dori suofu Iinked Iisf.

FIRST
I000H rec-I rec-Z

II000 oIi ZI00 IZ000 ifo MULL

I000H ZI000H

TAHAP CREATE PENAMAHAN DAN PENSHAPUSAN

1, PENAMAHAN dun CREATE
Longkoh-Iongkoh secoro umum :
I. mencipfokon eIemen boru
Z. mengisi dofo ke eIemen fersebuf
3. cek kondisi poinfer_owoI dori Iinked Iisf,
biIo :
kosong, Iokukon proses creute
not kosong Iokukon proses penumbuhun uwuI
penumbuhun tenguh
penumbuhun ukhir

4. - menempofkon posisi boru dori poinfer owoI, biIo penombohon record boru
berupo penumbuhun uwuI ofou creute.
- Membuof idenfifos boru dori record okhir dengon mengisi LIMI nyo dengon
MULL, biIo penombohonnyo berupo penumbuhun ukhir.
- Membuof sombungon boru ke Iinked Iisf ,
biIo penombohonnyo berupo penumbuhun tenguh.

Z, PENSHAPUSAN
Longkoh-Iongkoh secoro umum :
I. cek kondisi nof kosong dori Iinked Iisf,
biIo yo, Iokukon Iongkoh penghopuson
biIo fidok berikon peson bohwo Iinked Iisf kosong
Z. Sef poinfer ke record yong okon di deIefe
8iIo record yong okon di deIefe jouh dori record-I, moko Iokukon
peneIusuron unfuk menempofkon poinfer ke record yong okon di
deIefe.
3. Unfuk hopus :

AWAL pindoh poinfer_owoI ke record-I boru
TEM0AH Iokukon sombungon boru
AIHIP isikon MULL ke Iink yong okon menjodi record
okhir boru.
4. keIuorkon isi fieId dofo dori record yong okon di deIefe (opfion) .
Hopus record yong okon di deIefe.

ApIikusi Linier SingIy Linked List duIum buhusu C :

#incIude sfdio.h
#incIude cfype.h
#incIude conio.h
#incIude sfring.h
#incIude sfdIib.h

sfrucf simpuI
{chor nim[II],
chor nomo[Z0],
30
sfrucf simpuI ^Iink,
},

sfrucf simpuI ^firsf ~ MULL,
sfrucf simpuI ^penunjuk,
chor nimI[II],
chor nomoI[Z0],
void inserf_owoI(void),
void inserf_fengoh(void),
void inserf_okhir(void),
void deIefe_owoI(void),
void deIefe_fengoh(void),
void deIefe_okhir(),
void fompiI(void),

moin() {
chor piIih,
CIrurIoop:
{
cIrscr(),
gofoxy(Z0,b), pufs("Linier singIy Linked Iisf"),
gofoxy(Zb,7), pufs("I. inserf"),
gofoxy(Zb,9), pufs("Z. deIefe"),
gofoxy(Zb,II),pufs("3. fompiIon"),
gofoxy(Zb,I3),pufs("4. exif"),
gofoxy(Zb,Io),prinff("PiIih : "), sconf("7x", &piIih),
swifch(piIih) {
cose I:
prinff("\n mosukkon dofo MIM ~ "), sconf("7s", &nimI),
prinff("\n mosukkon dofo MAMA ~ "), sconf("7s", &nomoI),
if (firsf ~~ MULL) { insert_uwuI{}, }
eIse
{ penunjuk ~ firsf,
if (ofof(nimI) ofof(penunjuk-nim)) { insert_uwuI{}, }
eIse
{ whiIe (penunjuk-Iink l~ MULL)
{penunjuk ~ penunjuk-Iink,}
if ( ofof(nimI) ofof(penunjuk-nim)) { insert_ukhir{},}
eIse insert_tenguh{},}
}
gefch(), breok,

cose Z: prinff("\n MIM yong okon di deIefe : "), sconf("7s", &nimI),
if (firsf l~ MULL)
{ penunjuk ~ firsf,
if (ofof(nimI) ~~ ofof(penunjuk-nim)) { deIete_uwuI{},}
eIse
{ whiIe (penunjuk-Iink l~ MULL)
{penunjuk ~ penunjuk-Iink,}
if (ofof(nimI) ~~ ofof(penunjuk-nim)){deIete_ukhir{},}
eIse
{penunjuk ~ firsf-Iink,
whiIe(ofof(penunjuk-nim) l~ ofof(nimI))
{penunjuk ~ penunjuk-Iink,
if(penunjuk-Iink ~~ MULL)
{prinff("\n nim ~ 7s fidok odo di fiIe", nimI),
gefch(), gofo CIrurIoop,}
}
deIete_tenguh{},
}
}
}
31
gefch(), breok,

cose 3: tumpiI{}, gefch(), breok,

cose 4: exif(0), breok,
}
gofo CIr8orIoop,
}
}

void insert_uwuI{void} {
sfrucf simpuI ^p,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim, nimI),
sfrcpy(p-nomo, nomoI),

if (firsf l~ MULL)
{ p-Iink ~ firsf,
firsf ~ p,
prinff("\n sisip owoI"), }
eIse
{ p-Iink ~ MULL,
firsf ~ p,
prinff("\n creofe fiIe"), }
}

void insert_tenguh{void} {
sfrucf simpuI ^p, ^q, ^k,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim, nimI),
sfrcpy(p-nomo, nomoI),

if (firsf l~ MULL)
{ q ~ firsf,
whiIe (ofof(q-nim) ofof(nimI))
{ k ~ q,
q ~ q-Iink, }
p-Iink ~ q,
k-Iink ~ p,
prinff("\n sisip fengoh"),
}
eIse
{ insert_uwuI{}; }
}

void tumpiI{void} {
sfrucf simpuI ^p,
if (firsf l~ MULL)
{ p ~ firsf,
whiIe ( p l~ MULL)
{ sfrcpy(nimI, p-nim),
sfrcpy(nomoI, p-nomo),
p ~ p-Iink,
prinff("\n nim ~ 7s nomo ~ 7s", nimI, nomoI), }
}
}

void deIete_uwuI{void} {
sfrucf simpuI ^p,
if (firsf l~ MULL)
{
p ~ firsf,
32
firsf ~ firsf-Iink,
sfrcpy(nomoI, p-nomo),
p-Iink ~ MULL,
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
free(p),
}
eIse prinff("\n Iisf kosong"),
}

void deIete_ukhir{void} {
sfrucf simpuI ^p, ^q,
if (firsf l~ MULL)
{
p ~ firsf,
whiIe (p-Iink l~ MULL)
{
q ~ p,
p ~ p-Iink,
}
q-Iink ~ MULL,

sfrcpy(nimI, p-nim),
sfrcpy(nomoI, p-nomo),
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
p-Iink ~ MULL,
free(p),
}
eIse prinff("\n Iisf kosong"),
}

SouI: 1, uut procedure insert_ukhir deIete_tenguh
2. Subungkun Z Iinked Iist dibuwuh ini duIum kondisi tetup sort,


FIRST1

Z0 41 0 NULL

FIRSTZ
1 Z Z NULL


APLIkASI LINIER SINSLY LINkED LIST
LIMIED STACI
LIMIED QUEUE

1.1 LINkED STACk
Prinsip : fefop berIoku prinsip LIFO

STACk DYNAMIS :
kondisi kosong : TOP = NIL

kondisi penuh : TOP = tuk ter-
definisi

dekIurusi :
struc simpuI
niI {
struct simpuI *Iink;
dusur };
struct simpuI *top = NULL;
33

Longkoh-Iongkoh procedure PUSH somo dengon Iongkoh-Iongkoh podo inserf_owoI don
creofe dori Iinked Iisf.
Longkoh-Iongkoh procedure POP somo dengon Iongkoh-Iongkoh procedure deIefe_owoI.

SOAL : uut procedure POP dun PUSH


1.2 LINkED QUEUE
Prinsip : fefop berIoku prinsip FIFO

Front{ F } Reur{ R }


niI


Inserf suofu simpuI diIokukon podo Peor ( P ) sedong unfuk deIefe diIokukon podo
Fronf ( F ) sehinggo fefop berIoku prinsip FIFO.

kondisi kosong tergudi biIu : R = NIL dun
F = NIL
Procedure Inserf Iongkohnyo somo dengon procedure Sisip AwoI don Creofe dori Linier
Linked Lisf.

SOAL : uut procedure DeIete duri Iinked Queue


2. LIST ERANSkAI MELINSkAR
{ CircuIur SingIy Linked List }

Duput digunukun Z mucum versi yuitu :
1. menggunukun simpuI kepuIu yung fungsinyu hunyu sebugui penghubung,
2. tunpu menggunukun simpuI kepuIu

ud,1
Podo Iinked Iisf ini, fieId info dori simpuI heod berisi niI jodi bukon suofu
dofo.
SimpuI heod bukon record-I
Pecord perfomo odoIoh heod-Iink.
heud

record-1 rec, ukhir

nuII 1100 1 A190 Z C00 3 DE00

DE00H 1100H A190H C00H

heud
kondisi kosong tergudi biIu :

heud->Iink = heud nuII






ud,Z

34


First

rec, 1 rec, ukhir
1 1100 Z A190 3 C00 4 DE00

DE00H 1100H A190H C00H


Pecord perfomo odoIoh simpuI Firsf. Iondisi kosong ferjodi biIo : Firsf ~ MULL
First

NULL

Podo pembohoson seIonjufnyo digunokon versi I doIom memberifohu gomboron operosi
Penombohon don Penghopuson podo Iisf berongkoi funggoI meIingkor :

PENAMAHAN
Longkoh-Iongkoh umum fefop somo dengon Iinier singIy Iinked Iisf.

Insert_uwuI dun Creute

Creute :
p
heud

niI


Sisip AwuI :

p
heud



nuII



Longkoh-Iongkoh unfuk inserf_okhir don inserf_fengoh Iihof Iogiko podo Iinier
singIy Iinked Iisf.


PENSHAPUSAN
Podo Iisf meIingkor (CircuIor Lisf) eIemen HEAD fidok biso dihopus.
Longkoh-Iongkoh somo dengon Iinier singIy Iinked Iisf.

Hupus AwuI


HEAD hupus

DEL

HEAD




35
Longkoh-Iongkoh unfuk deIefe_okhir don deIefe_fengoh somo dengon Iinier singIy Iinked
Iisf

Progrum upIikusi circuIur singIy Iinked Iist dengun buhusu C:

#incIude sfdio.h
#incIude cfype.h
#incIude conio.h
#incIude sfring.h
#incIude sfdIib.h

sfrucf simpuI{
chor nim[II],
chor nomo[I0],
sfrucf simpuI ^Iink,
},

sfrucf simpuI ^heod ~ MULL,
sfrucf simpuI ^penunjuk,
chor nimI[II],
chor nomoI[I0],

void inif(void),
void inserf_owoI(void),
void inserf_fengoh(void),
void inserf_okhir(void),
void deIefe_owoI(void),
void deIefe_fengoh(void),
void deIefe_okhir(),
void fompiI(void),

moin() {
chor piIih,
init{};
CIrurIoop:
{
cIrscr(),
gofoxy(Z0,b), pufs("CircuIor singIy Linked Iisf"),
gofoxy(Zb,7), pufs("I. inserf"),
gofoxy(Zb,9), pufs("Z. deIefe"),
gofoxy(Zb,II),pufs("3. fompiIon"),
gofoxy(Zb,I3),pufs("4. exif"),
gofoxy(Zb,Io),prinff("PiIih : "), sconf("7x", &piIih),
swifch(piIih) {
cose I: prinff("\n mosukkon dofo MIM ~ "), sconf("7s", &nimI),
prinff("\n mosukkon dofo MAMA ~ "), sconf("7s", &nomoI),
if (heod-Iink ~~ heod) { inserf_owoI(), }
eIse
{ penunjuk ~ heod-Iink,
if (ofof(nimI) ofof(penunjuk-nim)) {inserf_owoI(),}
eIse
{ whiIe (penunjuk-Iink l~ heod)
{penunjuk ~ penunjuk-Iink,}
if (ofof(nimI) ofof(penunjuk-nim)) {inserf_okhir(),}
eIse { inserf_fengoh(),}
}
}
gefch(), breok,

cose Z: prinff("\n MIM yong okon di deIefe : "), sconf("7s", &nimI),
if ( heod-Iink l~ heod)
{ penunjuk ~ heod-Iink,
36
if (ofof(nimI) ~~ ofof(penunjuk-nim)){deIefe_owoI(),}
eIse
{ whiIe (penunjuk-Iink l~ heod)
{penunjuk ~ penunjuk-Iink,}
if(ofof(nimI)~~ ofof(penunjuk-nim)) {deIefe_okhir(),}
eIse
{penunjuk ~ heod-Iink,
whiIe(ofof(penunjuk-nim) l~ ofof(nimI))
{penunjuk ~ penunjuk-Iink,
if(penunjuk-Iink ~~ heod)
{prinff("\n nim ~ 7s fidok odo di fiIe", nimI),
gefch(), gofo CIr8orIoop,}
}
deIefe_fengoh(),
}
}
}
gefch(), breok,

cose 3: fompiI(), gefch(), breok,

cose 4: exif(0), breok,
}
gofo CIr8orIoop,
}
}

void init{void} {
sfrucf simpuI ^p,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim , 00000),
sfrcpy(p-nomo , "heod"),
heod ~ p,
p-Iink ~ p,
}

void insert_uwuI{void}{
sfrucf simpuI ^p,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim , nimI),
sfrcpy(p-nomo, nomoI),

if (heod-Iink l~ heod)
{ p-Iink ~ heod-Iink,
heod-Iink ~ p,
prinff("\n sisip owoI"),
}
eIse
{
heod-Iink ~ p ,
p-Iink ~ heod ,
prinff("\n creofe fiIe"),
}
}

void insert_tenguh{void} {
sfrucf simpuI ^p, ^q, ^k,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim , nimI),
sfrcpy(p-nomo, nomoI),
if (heod-Iink l~ heod)
{ q ~ heod-Iink,
37
whiIe (ofof(q-nim) ofof(nimI))
{ k ~ q,
q ~ q-Iink, }
p-Iink ~ q,
k-Iink ~ p,
prinff("\n sisip fengoh"), }
eIse
{heod-Iink ~ p,
p-Iink ~ heod ,
prinff("\n creofe fiIe"),}
}

/^ 8uof procedure inserf_okhir disini ,,,,,,..^/

void tumpiI{void} {
sfrucf simpuI ^p,

if ( heod-Iink l~ heod)
{ p ~ heod-Iink,
whiIe ( p l~ heod )
{ sfrcpy(nimI , p-nim),
sfrcpy(nomoI, p-nomo),
p ~ p-Iink,
prinff("\n nim ~ 7s nomoI ~ 7s", nimI, nomoI), }
}
}

/^8uof procedure deIefe_owoI,,,,,,..^/

void deIete_tenguh{void} {
sfrucf simpuI ^p, ^q,

if (heod-Iink l~ heod)
{ p ~ heod-Iink,
whiIe (ofof(p-nim) l~ ofof(nimI))
{ q ~ p,
p ~ p-Iink, }
q-Iink ~ p-Iink,
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
free(p),
}
eIse prinff("\n Iisf kosong"),
}

void deIete_ukhir{void}{
sfrucf simpuI ^p, ^q,

if (heod-Iink l~ heod)
{ p ~ heod-Iink,

whiIe (p-Iink l~ heod)
{q ~ p,
p ~ p-Iink, }
q-Iink ~ heod,
sfrcpy(nimI , p-nim),
sfrcpy(nomoI, p-nomo),
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
free(p), }
eIse prinff("\n Iisf kosong"),
}

b, SOAL : uut procedure insert_ukhir dun deIete_uwuI
38



3. LINIER DOULY LINkED LIST

Disebut gugu dengun two wuy chuin
DekIurusi :
LEFT INFO RISHT

kondisi kosong : L = NIL
R = NIL
List berisi 1 eIemen
niI niI muku kondisibyu L = R
biIu > 1 eIemen L -> niI
R -> niI
L R L -> R

kondisi isi :

L = Z411 R = 47

niI 3ZZ Z411 47 3ZZ niI

Z411 H 3ZZ H 47Z H
P
P->LEFT->RISHT P->RISHT

Ieft info right

P->LEFT P->RISHT->LEFT


Operusi yung bisu tergudi pudu Iinier doubIy Iinked Iist uduIuh

Inserf : inserf_ kiri deIefe : deIefe_kiri
inserf_konon deIefe_konon
inserf_ fengoh deIefe_fengoh

Penumbuhun :

a. Insert_kiri

Urufon Iongkoh-Iongkoh Iihof inserf_owoI Iinier singIy Iinked Iisf.

L L
R
P


0 0



b. Insert_Tenguh
P


L 4 S
R

39

0 Z0 30 0 0


PENSHAPUSAN :

a. DeIete - kiri

Longkoh - Iongkoh seperfi penghopuson podo Iinked Iisf yong Ioin.

hupus

P posisi buru L
L R


0 0



b. DeIete_Tenguh

Semuo operosi hopus fengoh seIoIu X sebogoi mosukon, bukon sebogoi keIuoron
(oufpuf) seperfi operosi hopus Ioinnyo.


P
L R

0 0




Sfrukfur simpuI yong okon dipokoi sebogoi confoh odoIoh sebogoi berikuf :

struct simpuI
{ chor nim[II],
chor nomo[I0],
sfrucf simpuI ^Ieff,
sfrucf simpuI ^righf,
},

Iondisi owoI dori poinfer L don poinfer P dinyofokon seperfi dibowoh ini :

struct simpuI *L= NULL;
struct simpuI *R = NULL;

Prosedure - prosedure inserf don deIefe doIom C :
#incIude sfdio.h
#incIude cfype.h
#incIude conio.h
#incIude sfring.h
#incIude sfdIib.h

sfrucf simpuI {
chor nim[II],
chor nomo[I0],
sfrucf simpuI ^Ieff,
sfrucf simpuI ^righf,
sfrucf simpuI ^konon,
40
},

sfrucf simpuI ^kiri~ MULL,
sfrucf simpuI ^penunjuk,
sfrucf simpuI ^konon ~ MULL,
chor nimI[II],
chor nomoI[I0],

void inserf_kiri(void),
void inserf_fengoh(void),
void inserf_konon(void),
void deIefe_kiri(void),
void deIefe_fengoh(void),
void deIefe_konon(void),
void fompiI(void),
void pesonI(void),
void pesonZ(void),

moin(){
chor piIih,
CIr8orIoop:
{
cIrscr(),
gofoxy(Zb,b), pufs("Linier doubIy Linked Iisf"),
gofoxy(Zb,8), pufs("I. inserf"),
gofoxy(Zb,I0), pufs("Z. deIefe"),
gofoxy(Zb,IZ), pufs("3. fompiIon"),
gofoxy(Zb,I4), pufs("4. exif"),
gofoxy(Zb,I7), prinff(" PiIih : "), sconf("7x", &piIih),
swifch(piIih) {
cose I: prinff("\n mosukkon dofo MIM ~ "), sconf("7s", &nimI),
prinff("\n mosukkon dofo MAMA ~ "), sconf("7s", &nomoI),
if (kiri ~~ MULL) {inserf_kiri(),}
eIse { penunjuk ~ kiri,
if (ofof(nimI) ofof(penunjuk-nim)) {inserf_kiri(),}
eIse
{ whiIe (penunjuk-righf l~ MULL)
{penunjuk ~ penunjuk-righf,}
if (ofof(nimI) ofof(penunjuk-nim)) {inserf_konon(),}
eIse {inserf_fengoh(),}
}
}
gefch(),
breok,

cose Z:
prinff("\n mosukkon MIM yong okon di deIefe ~ "), sconf("7s",
&nimI),
if ( kiri ~~ MULL) {pesonI(), gofo CIr8orIoop,}
eIse
{ penunjuk ~ kiri,
if (ofof(nimI) ~~ ofof(penunjuk-nim)) {deIefe_kiri(),}
eIse
{ penunjuk ~ konon,
if (ofof(nimI) ~~ ofof(penunjuk-nim)) {deIefe_konon(),}
eIse
{penunjuk ~ konon-Ieff,
whiIe (ofof(nimI) l~ ofof(penunjuk-nim))
{ if (penunjuk ~~ kiri )
{pesonZ(),gofo CIr8orIoop,}
eIse {penunjuk ~ penunjuk-Ieff,}
}
41
deIefe_fengoh(),
}
}
}
gefch(),
breok,

cose 3: fompiI(), gefch(), breok,

cose 4: exif(0), breok,
}
gofo CIr8orIoop,
}
}

void insert_kiri{void} {
sfrucf simpuI ^p,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim, nimI),
sfrcpy(p-nomo, nomoI),

if ( kiri l~ MULL) {
p-righf ~ kiri,
kiri-Ieff ~ p,
kiri ~ p,
p-Ieff ~ MULL,
prinff("\n sisip kiri"),
}
eIse
{
p-Ieff ~ MULL,
p-righf ~ MULL,
kiri ~ p,
konon ~ p,
prinff("\n creofe fiIe"),
}
}

void insert_tenguh{void} {
sfrucf simpuI ^p, ^q,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim , nimI),
sfrcpy(p-nomo, nomoI),

if (kiri l~ MULL) {
q ~ kiri,
whiIe (ofof(q-nim) ofof(nimI))
{ q ~ q-righf,}
p-righf ~ q,
p-Ieff ~ q-Ieff,
q-Ieff-righf ~ p,
q-Ieff ~ p,
prinff("\n sisip fengoh"),
}
eIse
{
p-Ieff~ MULL,
p-righf ~ MULL,
kiri ~ p,
konon ~ p,
prinff("\n creofe fiIe"),
}
42
}

/^ 8uof procedure inserf_konon,,,,,,.^/

void tumpiI{void} {
sfrucf simpuI ^p,
if ( kiri l~ MULL) {
p ~ kiri,
whiIe ( p l~ MULL)
{
sfrcpy(nimI , p-nim),
sfrcpy(nomoI, p-nomo),
p ~ p-righf,
prinff("\n nim ~ 7s nomo ~ 7s", nimI, nomoI),
}
}
}

/^8uof procedure deIefe_kiri,,,,,,,,^/

void deIete_tenguh{void} {
sfrucf simpuI ^p, ^q,
if (kiri l~ MULL) {
p ~ kiri,
whiIe (ofof(p-nim) l~ ofof(nimI))
{ p ~ p-righf,}
p-Ieff-righf ~ p-righf,
p-righf-Ieff ~ p-Ieff,
sfrcpy(nomoI, p-nomo),
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
free(p),
}
eIse prinff("\n Iisf kosong"),
}

void deIete_kunun{void} {
sfrucf simpuI ^p,
if (konon l~ MULL) {
p ~ konon,
konon ~ p-Ieff,
konon-righf ~ MULL,
sfrcpy(nimI , p-nim),
sfrcpy(nomoI, p-nomo),
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
free(p),
}
eIse prinff("\n Iisf kosong"),
}

void pesun1{void} {
gofoxy(Zb,ZZ),
prinff("Iisf kosong"),
gefch(),
}

void pesunZ{void} {
gofoxy(Zb,ZZ),
prinff("\n nim fidok odo di Iisf"),
gefch(),
}

SOAL : uut procedure insert_ kunun dun deIete_kiri
43




4. CIRCULAR DOULY LINkED LIST

HEAD
record-I rec. okhir
HEAD



Seperfi podo circuIor singIy Iinked Iisf moko podo circuIor doubIy Iinked Iisf jugo
diperIukon eIemen HEAD yoifu suofu eIemen kosong .


List duIum keuduun kosong,


HEAD= 00ffH
00ffH
00ff HEAD 00ff HEAD->LEFT := HEAD dun

HEAD->RISHT := HEAD


List berisi 1 eIemen

HEAD P

NIL

00ff H 0b0c H



Pudu suut Iist > 1 eIemen :

Pecord-I berodo podo posisi HEAD-PI0HT
sedong record okhir podo posisi HEAD-LEFT


PENAMAHAN

Sisip AwuI

P


HEAD


HEAD



Unfuk procedure yong Ioin Iihof Iongkoh-Iongkoh circuIor singIy Iinked Iisf.

struct simpuI
{chor nim[11j,
chor numu[10j,
44
sfrucf simpuI *Ieft,
sfrucf simpuI *right, },


ApIikosi progrom curcuIor doubIy Iinked Iisf yong difuIis doIom bohoso C :

#incIude sfdio.h
#incIude cfype.h
#incIude conio.h
#incIude sfring.h
#incIude sfdIib.h

sfrucf simpuI {
chor nim[II],
chor nomo[I0],
sfrucf simpuI ^Ieff,
sfrucf simpuI ^righf,
},
sfrucf simpuI ^heod ~ MULL,
sfrucf simpuI ^penunjuk,

chor nimI[II],
chor nomoI[I0],

void inif(void),
void inserf_owoI(void),
void inserf_fengoh(void),
void inserf_okhir(void),
void deIefe_owoI(void),
void deIefe_fengoh(void),
void deIefe_okhir(),
void fompiI(void),
void pesonI(void),
void pesonZ(void),

moin() {
chor piIih,
inif(),
CIr8orIoop:
{
cIrscr(),

gofoxy(Zb,b), pufs("CircuIor doubIy Linked Iisf"),
gofoxy(Zb,8), pufs("I. inserf"),
gofoxy(Zb,I0), pufs("Z. deIefe"),
gofoxy(Zb,IZ), pufs("3. fompiIon"),
gofoxy(Zb,I4), pufs("4. exif"),
gofoxy(Zb,I7), prinff(" PiIih : "), sconf("7x", &piIih),
swifch(piIih) {
cose I:
prinff("\n mosukkon dofo MIM ~ "), sconf("7s", &nimI),
prinff("\n mosukkon dofo MAMA ~ ") sconf("7s", &nomoI),
if (heod-righf ~~ heod) {inserf_owoI(),}
eIse { penunjuk ~ heod-righf,
if (ofof(nimI) ofof(penunjuk-nim)) {inserf_owoI(),}
eIse
{ whiIe (penunjuk-righf l~ heod)
{penunjuk ~ penunjuk-righf,}

if (ofof(nimI) ofof(penunjuk-nim)) {inserf_okhir(),}
eIse {inserf_fengoh(),}
}
45
}
gefch(),
breok,

cose Z:
prinff("\n mosukkon MIM yong okon di deIefe ~ "),
sconf("7s", &nimI),
if ( heod-righf ~~ heod) {pesonI(), gofo CIr8orIoop,}
eIse
{ penunjuk ~ heod-righf,
if (ofof(nimI) ~~ ofof(penunjuk-nim)) {deIefe_owoI(),}
eIse
{ penunjuk ~ heod-Ieff,
if (ofof(nimI) ~~ ofof(penunjuk-nim)) {deIefe_okhir(),}
eIse
{penunjuk ~ penunjuk-Ieff,
whiIe (ofof(nimI) l~ ofof(penunjuk-nim))
{ if (penunjuk ~~ heod )
{pesonZ(),gofo CIr8orIoop,}
eIse {penunjuk ~ penunjuk-Ieff,}
}
deIefe_fengoh(),
}
}
}
gefch(), breok,

cose 3: fompiI(), gefch(), breok,

cose 4: exif(0), breok,
}
gofo CIr8orIoop,
}
}

void inif(void) {
sfrucf simpuI ^p,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),

sfrcpy(p-nim , 00000),
sfrcpy(p-nomo , "heod"),
heod ~ p,
p-Ieff ~ p,
p-righf ~ p,
}

void inserf_owoI(void) {
sfrucf simpuI ^p,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim , nimI),
sfrcpy(p-nomo, nomoI),

if (heod-Ieff l~ heod) {
p-righf ~ heod-righf,
p-Ieff ~ heod,
heod-righf-Ieff ~ p,
heod-righf ~ p,
prinff("\n sisip owoI"),
}
eIse
{
heod-righf ~ p ,
46
heod-Ieff ~ p,
p-righf ~ heod ,
p-Ieff ~ heod,
prinff("\n creofe fiIe"),
}
}

void inserf_fengoh(void) {
sfrucf simpuI ^p, ^q,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim , nimI),
sfrcpy(p-nomo, nomoI),

if (heod-Ieff l~ heod) {
q ~ heod-righf,

whiIe (ofof(q-nim) ofof(nimI))
{ q ~ q-righf,}
p-righf ~ q,
p-Ieff ~ q-Ieff,
q-Ieff-righf ~ p,
q-Ieff ~ p,
prinff("\n sisip fengoh"),
}
eIse
{
heod-righf ~ p,
heod-Ieff ~ p,
p-Ieff ~ heod ,
p-righf ~ heod,
prinff("\n creofe fiIe"),
}
}

void insert_ukhir{void} {
sfrucf simpuI ^p, ^q,
p ~ (sfrucf simpuI ^) moIIoc(si;eof(sfrucf simpuI)),
sfrcpy(p-nim , nimI),
sfrcpy(p-nomo,nomoI),
if (heod-righf ~~ heod) {
heod-righf ~ p,
heod-Ieff ~ p,
p-Ieff ~ heod,
p-righf ~ heod,
prinff("\n creofe fiIe"),
}
eIse
{
p-Ieff ~ heod-Ieff,
p-righf ~ heod,
heod-Ieff-righf ~ p,
heod-Ieff ~ p,
prinff("\n sisip okhir"),
}
}

void tumpiI{void} {
sfrucf simpuI ^p,
if ( heod-Ieff l~ heod) {
p ~ heod-righf,
whiIe ( p l~ heod ) {
sfrcpy(nimI , p-nim),
47
sfrcpy(nomoI, p-nomo),
p ~ p-righf,
prinff("\n nim ~ 7s nomoI ~ 7s", nimI, nomoI),
}
}
}

void deIete_uwuI{void} {
sfrucf simpuI ^p,
if (heod-Ieff l~ heod) {
p ~ heod-righf,
heod-righf ~ p-righf,
sfrcpy(nimI , p-nim),
sfrcpy(nomoI, p-nomo),
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
free(p),
}
eIse prinff("\n Iisf kososng"),
}

void deIete_tenguh{void} {
sfrucf simpuI ^p, ^q,
if (heod-Ieff l~ heod)
{ p ~ heod-righf,
whiIe (ofof(p-nim) l~ ofof(nimI))
{ p ~ p-righf, }
p-Ieff-righf ~ p-righf,
p-righf-Ieff ~ p-Ieff,
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
free(p),
}
eIse prinff("\n Iisf kosong"),
}

void deIete_ukhir{void} {
sfrucf simpuI ^p, ^q,

if (heod-righf l~ heod) {
p ~ heod-Ieff,
p-Ieff-righf ~ heod,
heod-Ieff ~ p-Ieff,

sfrcpy(nimI , p-nim),
sfrcpy(nomoI, p-nomo),
prinff("\n nim ~ 7s nomo ~ 7s ", nimI, nomoI),
free(p),
}
eIse prinff("\n Iisf kosong"),
}

void pesun1{void} {
gofoxy(Zb,ZZ),
prinff("Iisf kosong"),
gefch(),
}

void pesunZ{void} {
gofoxy(Zb,ZZ),
prinff("\n nim fidok odo di Iisf"),
gefch(),
}

48




STRUkTUR DATA NON LINIER

Terdiri duri :
Struktur pohon
Sruph

STRUkTUR POHON { TREE STRUCTURE }

Definisi Pohon uduIuh :
susunon dori sofu ofou Iebih simpuI (node) yong ferdiri dori sofu simpuI khusus
yong disebuf okor (roof) sedong sisonyo membenfuk subfree dori okor

IeveI
A 1

C D Z

E F S H I J 3

k L M 4



Akur duri struktur pohon ini uduIuh A

Sofu simpuI okon berisi : - informusi {mis : A dst,}
- cubung-cubung {Iink} yung menghu
bungkun ke simpuI-simpuI yung Iuin

SimpuI A sebogoi okor mempunyoi 3 Iink yong membenfuk SUTREE 8, C
don D,
JumIoh subfree dori sofu simpuI disebuf : DERAJAT {DESREE}
Derojof dori simpuI : A = 3
= Z
C = 1
S = 0

SimpuI yong mempunyoi derojof ~ 0 disebuf :
SIMPUL TERMINAL utuu DAUN {LEAF}

confoh :
simpuI doun doIom gombor diofos odoIoh k L F S M I don J.

Sfrukfur pohon yong ferkenoI odoIoh sfrukfur geneoIogi (siIsiIoh).
DoIom sfrukfur siIsiIoh dikenoI odonyo simpuI onok (chiIdren) don orongfuo
dori onok (porenf).

Confoh : unuk dori D odoIoh H I don J.
orungtuu dori D odoIoh A

Anok dori orongfuo yong somo disebuf SILINS {mis : H I J}

DERAJAT {DESREE} SUATU POHON :
uduIuh derugut muksimum duri suutu simpuI duIum pohon
49

confoh : derojof pohon dori gombor diofos odoIoh 3.

Menek moyong dori suofu simpuI odoIoh seIuruh simpuI-simpuI yong odo seponjong
Iinfoson dori okor sompoi simpuI fersebuf.
Confoh : nenek moyong M odoIoh A, D don H

kEDALAMAN {HEISHT utuu DEPTH}
dori suofu pohon difenfukon oIeh IeveI moksimum dori simpuI doIom pohon.
Confoh : kedoIomon pohon dori gombor diofos odoIoh 4

HUTAN {FOREST}
odoIoh susunon dori beberopo pohon
8iIo okor A dihiIongkon moko okon diperoIeh hufon dengon 3 pohon yoifu :
{ E { kL } F}
C {S}
D {H {M} I J}

Ado Z coro unfuk menyofokon sfrukfur pohon, yoifu dengon :
1. gumbur
2. duftur {Iist}

Pernyofoon dengon gombor odoIoh seperfi ferIihof podo gombor diofos, sedong koIou
dengon Iisf odoIoh sebogoi berikuf :

{A { {E {kL} F} C {S} D{H {M} I J } } }

Proses doIom sfrukfur dofo non Iinier, benfuk pohon okon Iebih mudoh digomborkon
biIo dikefohui :

n {gumIuh simpuI utuu node}
k {derugut pohon}

Duri dutu n dun k muku duput dihitung :
JUMLAH LINk = n , k
JUMLAH NULL-LINk = n {k - 1} + 1
JUMLAH NON ZERO-LINk = n - 1

Struktur node k-ury :

D A T A
chiId-1 ,,,,, chiId-k



Pohon 3-ury :


A non zero-Iink


C D
0 0 0

E F S H I J
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Zero - Iink

Dori gombor diofos dikefohui : n = 10 dun k = 3
moko dopof dihifung :
50
gumIuh Iink = n,k = 3,10 = 30
gumIuh nuII-Iink = n{k-1} + 1
= 10 {3-1} 1
= Z1
gumIuh non zero-Iink = n - 1 = 10 - 1
= 9
iIu k = Z muku pohon disebut POHON INER,

POHON INER {INARY TREE}
AdoIoh fipe yong songof penfing dori sfrukfur dofo.
DoIom sfrukfur pohon biner honyo dikenoI SUTREE kIRI don SUTREE kANAN
sojo,

SimpuI duIum pohon biner uduIuh :
susunon dori simpuI-simpuI yong mosing-mosing biso kosong ofou ferdiri dori
okor don duo pohon biner yong ferpisoh don disebuf subfree kiri don subfree konon.

A Pohon biner dengun subtree kunun
kosong,


A Pohon biner dengun subtree kiri
kosong



A A

C C

D E F S D E

FuII inury Tree CompIete inury Tree


Pohon iner Penuh {"FuII inury Tree"}
odoIoh pohon biner yong mempunyoi simpuI ofou node Iengkop dori IeveI I
sompoi dengon i

Pohon iner Lengkup {"CompIete inury Tree"}
odoIoh pohon biner yong mempunyoi simpuI dengon nomor uruf dori I sompoi
dengon n

JumIuh muksimum simpuI duri pohon biner dengun IeveI i uduIuh :
Z
i
- 1 dimunu i >= 1

JumIuh simpuI pudu IeveI i uduIuh :
Z
i - 1


contoh :
8iIo kedoIomon suofu pohon ~ 4 moko jumIoh simpuI dori pohon fersebuf :
Z
4
- 1

= 1

unyuknyu simpuI pudu :
IeveI I : Z
I-I
~ I
IeveI Z : Z
Z-I
~ Z
IeveI 3 : Z
3-I
~ 4
IeveI 4 : Z
4-I
~ 8

IedoIomon minimuI dori pohon biner odoIoh :
{ Iog
Z
n + 1 } dimono n ~ jumIoh simpuI

51
contoh : biIo n ~ Ib
muku keduIumun minimuI = Iog
Z
1 + 1

Iog 1
= + 1
Iog Z
= 117 / 0,3 + 1 = 3 + 1 = 4

SkEWED TREE : odoIoh pohon biner yong miring ke kiri ofou ke konon , ofou
dengon kofo Ioin pohon biner dengon subfree kiri kosong ofou
konon kosong.



A 8enfuk pohon seperfi ini biIo disim
pon doIom benfuk orroy songof
memboroskon,

C

D

Pepresenfosinyo odoIoh sebogoi berikuf :

1 A
Z
3
4 C


7
D
9
, kosong sebunyuk 7 eIemen
1

TerIihof dori confoh diofos bohwo penyimponon dofo doIom memory dori pohon
biner honyo mengunfungkon koIou pohon binernyo penuh sehinggo fidok
memboroskon fempof.

Unfuk menongguIongi ini moko perIu menggunokon represenfosi Iinked Iist,
dimono mosing-mosing simpuI okon mempunyoi 3 fieId yoifu :

LCHILD DATA RCHILD
utuu
DATA



LCHILD RCHILD


struct numu_simpuI
{
tipe dutu DATA ;
struct numu_simpuI *RCHILD *LCHILD ;
};


contoh representusi Iink :

pohon biner biusu skewed tree
52

T T

A A 0


C 0


0 D 0 0 E 0 0 F 0 0 S 0 C 0



PENELUSURAN POHON INER {inury Tree TruversuI}

AdoIoh ide unfuk meIokukon peneIusuron (froversing) ofou kunjungon (visifing) mosing-
mosing simpuI sebonyok sofu koIi.
PeneIusuron sofu pohon biner penuh okon menghosiIkon urufon Iinier dori informosi
doIom pohon ifu.

Adu 3 mucum truversuI : - Inorder TruversuI
- Preorder TruversuI
- Postorder TruversuI

INORDER TRAVERSAL
DimuIoi dori simpuI poIing kiri bowoh kemudion ke okor dori simpuI fersebuf
diIonjufkon ke konon dori okor yong difinjou, kemudion cori simpuI poIing kiri dori
subfree konon fersebuf, begifu seferusnyo sompoi fidok biso berpindoh ke konon.


+

* E

/ D

A **

C


Dori confoh diperoIeh persomoon Inorder :

A / ** C * D + E

Lungkuh-Iungkuh : 1, TeIusuri subfree kiri doIom inorder
2. Proses simpuI okor
3. TeIusuri subfree konon doIom inorder

Prosedure INORDER menggunukun stuck :

void IMOPDEP(void) {
sfrucf simpuI ^p,
if (T l~ MIL)
{ P ~ T, TOP ~ 0,
do {
whiIe ( P l~ MULL)
{ PUSH(),
P ~ P-LCHILD,}
P ~ POP(S, TOP),
53
prinff ( "7i ", DATA(P)),
P ~ P-PCHILD,}
whiIe (P~~ MULL) && (STACI ~~ EMPTY)}
eIse
{prinff("POHOM IOSOM0"),
refurn(0),}
}

Procedure INORDER menggunukun recursive :

void PIMOPDEP( void){
if (T l~ MULL)
{ if (T-LCHILD l~ MULL)
{ T ~ T-LCHILD,
PIMOPDEP(),}
prinff("7i ", T-DATA),
if (T-PCHILD l~ MULL)
{ T ~ T-PCHILD,
PIMOPDEP(),}
}
eIse
{ prinff(" EMPTY TPEE"), refurn(0),}
}


TerIihut duri contoh diutus buhwu penuIisun dengun recursive Iebih sederhunu
dibunding dengun pemrogrumun biusu,

PeIucukun dengun rekursive

IF T -> NIL THEN

- yu - yu - yu - tiduk
- print 'A'
- tiduk
- print '/'
- yu - yu - tiduk
- print
''
- tiduk
- print '**'
- yu - tiduk
- print'C'
- tiduk
- print '*'
- yu - tiduk
- print 'D'
- tiduk
- print '+'
- yu - tiduk
- print 'E'
- tiduk




PREORDER TRAVERSAL


+

54
* E

/ D


A **

C

Lungkuh-Iungkuh : 1, Proses simpuI ukur
2. TeIusuri subtree kiri duIum preorder
3. TeIusuri subtree kunun duIum preorder

Persumuun preorder uduIuh :

+ * / A ** C D E

void PPPEOPDEP(void)
{ if ( T l~ MULL)
{ prinff(" 7i ", T-DATA),
if ( T-LCHILD l~ MULL)
{ T ~ T-LCHILD, PPPEOPDEP(),}
if ( T-PCHILD l~ MULL)
{ T ~ T-PCHILD, PPPEOPDEP(),}
}
eIse { prinff(" EMPTY TPEE"), refurn(0),}
}

POSTORDER TRAVERSAL


+

* E

/ D

A **

C


Lungkuh-Iungkuh : 1, TeIusuri subtree kiri duIum postorder
2. TeIusuri subtree kunun duIum postorder
3. Proses simpuI ukur

Persumuun postorder uduIuh :

A C ** / D * E +

Procedure rekursive duri postorder uduIuh sebugui berikut :

void PPOSTOPDEP(void)
{ if ( T l~ MIL )
{ if (T-LCHILD l~ MULL)
{ T ~ T-LCHILD, PPOSTOPDEP(),}
if ( T-PCHILD l~ MULL)
{ T ~ T-PCHILD, PPOSTOPDEP(),}
prinff(" 7i ", T-DATA),
}
55
eIse { prinff(" EMPTY TPEE "), refurn(0),}
}

REPRESENTASI DARI DARI POHON k-ARY kE INARY

Representusi duri pohon k-ury ke binury mempunyui struktur simpuI sebugui berikut
:

DATA
CHILD SILINS


sfrucf numu_simpuI
{ tipe dutu DATA,
sfrucf numu_simpuI ^CHILD, ^SI8LIM0,}


3-ury Z-ury


A A


C D C D


E F S H I J E F S H I J

Atuu :


A

E C

F S D

H

I


J
kuIuu udu 3 pohon kemudiun disutukun mengudi sutu pohon

A E S

C D F H I



A E S

C D F H I


utuu
A

E

C F S
56

D H

I


POHON INER ERENANS {Threuded inury Tree}

Sfrukfur pohon biner berbenong dopof digunokon unfuk memonfoofkon "nuII-Iink" yong
fernyofo cukup bonyok jumIohnyo doIom sfrukfur pohon biner, yoifu :
gumIuh nuII-Iink biner = n{k-1} + 1 = n{Z-1} + 1 = n + 1

Idenyo yoifu menggonfikon nuII-Iink dengon Iink yong disebuf benong(fhreod), ke simpuI
yong Ioin doIom pohon.

Struktur simpuInyu uduIuh sebugui berikut :

LIT LCHILD DATA RCHILD RIT


LITRIT= 1; biIu LCHILD utuu RCHILD merupukun Iink biusu
LITRIT= 0; biIu LCHILD utuu RCHILD merupukun Iink benung

Agor supoyo Z Iink benong yong fidok menunjuk kemono-mono {DANSLINk} yoifu Iink
poIing kiri dori subfree kiri don Iink poIing konon dori subfree konon dopof diisi
dengon Iink benong moko dibuof suofu simpuI kepoIo.

POHON INER ERENANS TANPA SIMPUL HEAD

T

A

C
dungIink dungIink

D E F S

H I
inorder successor inorder predecessor
POHON INER ERENANS DENSAN SIMPUL HEAD

HEAD

L8IT LCHILD DATA PCHILD P8IT

I 0IA0 0099 I
0099 H
0IA0 H
I 04CC A 0Z8C I


04CC H 0Z8C H
I 8 I I C I



I D I 0 E 0 0 F 0 0 0Z8C 0 0099 0



57
0 H 0 0 I 0



SRAPH

Dinyofokon doIom suofu fungsi 0 ~ (V , E) dimono
V = kumpuIun simpuI/ verte/ node
E = kumpuIun busur / edge/ urc

Tiop busur posfi menghubungkon Z simpuI
Ado Z mocom groph
1. Sruph tuk teruruh { Undirected gruph}
2. Sruph teruruh { Directed gruph}

1. SRAPH TAk TERARAH {Undirected Sruph}

VI V4 VI-VZ ~ VZ-VI

busur VI-V4 ~ V4-VI

dsf
VZ V3
simpuI

0roph fok feroroh odoIoh groph yong menghubungkon Z simpuI VI ke VZ don VZ ke
VI ( Z oroh )

8iIo simpuI ~ n moko groph fok feroroh kompIif okon mempunyoi busur somo dengon

n { n - 1 } / Z


2. SRAPH TERARAH { Directed Sruph }

V1 V4
0roph feroroh odoIoh groph
yong honyo dopof menghubung
kon VI ke VZ sojo (I oroh)
VZ V3 (VI-VZ) (VZ-VI)
Moksimum jumIoh busur dori n simpuI odoIoh :

n { n - 1 }


MULTISRAPH


V1 VZ MuIfi groph odoIoh Z buoh simpuI
VI-VZ yong dihubungkon oIeh bu
busur yong joroknyo berbedo-bedo


CYCLE
Definisi
CycIe odoIoh suofu Iinfoson yong kemboIi ke simpuI semuIo

obot {pungung} Iintusun


58
V1 V4
8obof (ponjong) Iinfoson odoIoh jumIoh
7 busur yong menghubungkon simpuI
Vx ke simpuI Vy
VZ V3
10

ponjong dori VI ke V4 odoIoh :
busur I, Z, 4 7 + o ~ I3
busur I, Z, 3,4 7 + I0 + b ~ ZZ (Iinfoson krifis)
busur I, 4 8

SRAPH CONECTED

Definisi :
Suofu groph odoIoh connecfed jiko unfuk sefiop posongon simpuI Vi don Vj odo Iinfoson yong
menghubungkonnyo.

SRAPH UNCONECTED

Definisi
Suofu groph non connecfed berisi poIing sedikif I posongon yong fidok ferhubung

REPRESENTASI SRAPH :

Terdiri duri : 1, Adgucency mutri
2. Adgucency List
3. Adguency Arruy


1. ADJACENCY MATRIX
Orienfosinyo ke simpuI dori groph

Ukuron : A[ n n j

dimono A ~ mofrix
n ~ jumIoh simpuI
Definisi :
o
i
~ I , jiko odo busur yong menghubungkon
simpuI i don j
~ 0 , jiko fidok odo hubungon

UNDIRECTED

1 A ~ 0 I I I
I 0 I I
Z 3 I I 0 I
I I I 0
4
utus & buwuh simetri

DIRECTED


1
0 I 0

Z A = I 0 I

0 0 0
59
3

koIom menyofokon IN - DESREE
boris menyofokon OUT - DESREE

2. ADJACENCY LIST

Pepresenfosinyo doIom benfuk Iisf berongkoi
Ieunfungon : biso diIokukon penombohon simpuI dengon mudoh, koreno sifofnyo
dinomis

Undirected Sruph

1 verfex-I Z 3 4 0


Z 3 verfex-Z I 3 4 0


4 verfex-3 I Z 4 0


verfex-4 I Z 4 0

Directec Sruph


1 verfex-I Z 0


Z verfex-Z I 3 0


3 verfex-3 0


Derojof dori fiop simpuI doIom undirecfed groph biso difenfukon dengon
menghifung jumIoh simpuI doIom odjocency Iisf.

Sedongkon doIom direcfed groph derojof keIuoron (outdegree) dopof
difenfukon dori jumIoh node yong ferhubung podo odjocency Iisfnyo, fopi
mengoIomi kesuIifon doIom meIihof derojof mosukon (indegree) dori fiop simpuI.

Unfuk ifu disojikon benfuk INVERSE ADJACENCY LIST yong
memperIihofkon jumIoh derojof mosukon dori fiop simpuI.

INVERSE ADJACENCY LIST


1 verfex-I Z 0


Z verfex-Z I 0


3 verfex-3 Z 0



3. ADJACENCY ARRAY

60
Lebih cocok unfuk groph beroroh, unfuk sefiop e
k
mempunyoi posongon simpuI osoI
Vi don simpuI fujuon Vj.


VZ VosoI Vfujuon

eI I Z
V1 V3 eZ 4 I
e3 Z 3
e4 Z b
eb 3 4
V4 V eo b 4
e7 3 b


AsoI I 4 Z Z 3 b 3


Tujuon Z I 3 b 4 4 b


0obungon dori keduo orroy ini menjodi I orroy odoIoh sebogoi berikuf :

3 b 3 Z Z 4 I X Z I 3 b 4 4 b

simpuI osoI simpuI fujuon


ApIikusi SRAPH :
a. CriticuI Puth {Iintusun kritis}
b. Minimum Spunning Tree {MST} : 8ogoimono mencopoi semuo simpuI suofu
simpuI osoI , dengon fofoI Iinfoson minimum

Lintusun kritis : menggunokon 0roph berbobof

Z Cori Iinfoson krifisnyo
10
I b 3 SimpuI osoI : I

7 4 8 SimpuI fujuon : b
4

0roph 0
Iinfoson bobof
oIfernofif : I Z b Ib
I Z 3 b Z4
I Z 3 4 b Z9
I 4 b Io
I 4 3 b I9
I 4 3 Z b ZZ

diperoIeh : Iinfoson krifis ~ Z9
Iinfoson ferpendek ~ Ib

MINIMUM SPANNINS TREE

Lihof gombor 0roph 0

S' ~ subgroph dori 0 VZ

61
VI V3
8obof ~ I0 + o + b + 9
~ 30 V4 Vb

S" ~ subgroph dori 0 VZ

membenfuk sfrukfur pohon VI V3
sponning free dori 0

8obof ~ 7 + 4 + o + 8 ~ Zb V4 Vb


0'" ~ subgroph dori 0

VZ
8obof ~ 7 + 4 + o + b
VI V3

Moko MST ~ ZZ
V4 Vb


PENELUSURAN SRAPH

Dopof diIokukon dengon Z coro yoifu :
Depth First Seurch {DFS}
reudth First Seurch {FS}


DEPTH FIRST SEARCH {DFS}

PeneIusuron dengon DFS podo groph fok feroroh dengon meIokukon pengecekon
podo simpuI dengon kedoIomon perfomo dori simpuI yong difinjou

VEPTEX

VI
VI Z 3 0

VZ V3 VZ I 4 b

V3 I o 7

V4 Vb Vo V7
V4 Z 8 0

Vb Z 8 0

V8 Vo 3 8 0

V7 3 8 0

V8 4 b o




void DFS( V ) {
/^ V odoIoh node yong difinjou ^
visifed odoIoh orroy unfuk node yong sudoh dikunjungi
62
dengon horgo owoI seIuruhnyo somo dengon noI ^/

VISITED[ V ] I

for mosing-mosing verfex(w) odjocenf fo v
{ if ( VISITED[W] ~~ 0) DFS(W) }
}

Dori gombor diofos okon diperoIeh urufon :

VI VZ V4 V8 Vb,Vo V3 V7


READTH FIRST SEARCH {FS}

8erbedo dengon coro DFS, dengon 8FS peneIusuron okon diowoIi dori node-I kemudion
meIebor podo odjocenf node dori node-I don diferuskon podo node-Z, node-3 dsf.

Void FS{ V };
{
/^ Q odoIoh onfrion dori verfex V, sedong VISITED odoIoh orroy dori verfex
yong sudoh difinjou dengon horgo owoI ~ 0 don biIo sudoh difinjou ~ I
8iIo okon difinjou verfex dimosukkon doIom onfrion, sedong biIo sudoh
difinjou verfex okon di deIefe ^/

VISITED[ V ] I
whiIe ( Q nof empfy )
{
DELETE Q(V, Q)
for (oII verfices W odjocenf fo V )
{
IF ( VISITED (W) ~ 0 )
{ ADDQ(W,Q)
VISITED I}
}
}
}

Dengon procedure 8FS okon diperoIeh urufon sebogoi berikuf :

VI VZ, V3 V4, Vb, Vo, V7 V8



SEARCH DAN SORT

SEARCH

FiIe odoIoh kumpuIon record-record sejenis dimono mosing-mosing record
mempunyoi Iebih dori sofu fieId. FieId-fieId fersebuf diperIukon unfuk
memberikon suofu idenfifikosi bogi mosing-mosing record. Iey(kunci) fieId
unfuk idenfifikosi record okon fergonfung podo opIikosi ferfenfu.

MisoI : FiIe mohosiswo menggunokon fieId yong berisi MOMOP IMDUI
MAHASISWA (MIM)

Ado beberopo coro seorching , yoifu :
a. Iineur seurch {sequentiuI seurch}
b. binury seurch
c. Fibonucci seurch
63

DoIom meIokukon seorch (pencorion) ini diosumsikon fiIe doIom keodoon sudoh sorf
(uruf).

a. LINEAR SEARCH
Pencorion dimuIoi dori record-I, diferuskon ke record berikufnyo yoifu record ke-Z,
ke-3 ,. dsf, sompoi diperoIeh isi record somo dengon informosi yong dicori. OIeh
koreno ifu fiIe podo Lineor seorch fidok mufIok horus uruf

8iIo M ~ jumIoh record doIom fiIe
X ~ informosi yong okon dicori doIom fiIe
I ~ nomo fiIe
I[M+I] ~ X digunokon sebogoi senfineI eIemen

moko procedurnyo odoIoh sebogoi berikuf :

#incIude sfdio.h
#incIude sfdIib.h
#incIude sfring.h
#incIude conio.h
#incIude cfype.h
#incIude dos.h
#define n Z0

void Iinier{void};
void binury{void};
void fibonuci{void};

sfofic inf I[n+1] ~ { 0, Ib, Z0, Zb, 30, 3b, 40, 4b, b0, bb, o0,
ob, 70, 7b, 80, 8b, 90, 9b, I00, I0b, 0,},
inf nim,
sfrucf fime wokfu,
muin{} {
inf piIih,
CIr8orIoop:
{ cIrscr(),
prinff("\n\n"),
gofoxy(3b,b),pufs("Cobu Seurch"),
gofoxy(Zb,7),pufs("1, Linier seurch"),
gofoxy(Zb,9),pufs("Z, inury seurch"),
gofoxy(Zb,II),pufs("3, Fibonuci seurch"),
gofoxy(Zb,I3),pufs("4, eit"),
gofoxy(Z9,Ib),pufs("PiIih : "), gofoxy(37,Ib),sconf("7x", &piIih),

swifch(piIih) {
cose I: prinff("\n musukkun dutu nim ~ "), sconf("7d", &nim),
Iinier{};
gefch(), breok,
cose Z: prinff("\n musukkun dutu nim = "), sconf("7d", &nim),
binury{};
gefch(), breok,
cose 3: prinff("\n mosukkon dofo nim ~ "), sconf("7d", &nim),
fibonuci{};
gefch(), breok,
cose 4: eit{0}; breok,
}
gofo CIr8orIoop, }
}

void Iinier{void} {
inf I,
64
geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d",wokfu.fi_hour,wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),

I~I,
prinff("\n iterusi ke- :"),
whiIe( I[I] l~ nim)
{ prinff(" 7d",I), I~I+I, }
if (I ~~ (n+I) ) { prinff(" seurch gugoI "),}
eIse {prinff(" 7d",I),
prinff("\n\n iterusi = 7d nim ~ 7d udu di posisi = 7d", I,nim, I),}
prinff("\n"),
geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d",wokfu.fi_hour,wokfu.fi_min,wokfu.fi_sec),
}

void binury{void}{
inf Iow, mid, high, I,
geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d",wokfu.fi_hour,wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),
Iow = 1; high = n; I = 1;
prinff("\niferosi Iow high mid"),
whiIe (Iow ~ high)
{ mid = {Iow + high}/Z;
prinff ("\n 7d 7d 7d 7d",I,Iow, high,mid),
gefch(),

if (nim I[mid])
{high = mid - 1; I = I+1;}
eIse{if (nim I[mid]) {Iow = mid + 1; I= I+1;}
eIse {prinff("\n\nnim ~ 7i odo di posisi 7i\n",nim, mid),
geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d", wokfu.fi_hour,
wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),
refurn,}
}
}
}

void fibonuci{void}
{ unsigned inf fib[Zb],
int I p q m j, f,
inf iferosi ~ 0,
geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d",wokfu.fi_hour,wokfu.fi_min,wokfu.fi_sec), prinff("\n"),

fib[0j = 0; fib[1j = 1;
for( j ~ Z, jIb , j++) {fib[gj = fib[g-1j + fib[g-Zj;}
prinff("\n Fibonocci sequence : "),
for( j ~ 0, jIb , j++) {prinff("7i ", fib[j]),}
gefch(),
j ~ 0,
whiIe ( fib[j] ~ (n + I)) {j~ j+I,}
m ~ n + I - fib[j-I],
I = fib[g-Zj;
p = fib[g-3j;
q = fib[g-4j;
prinff("\n\n m~ 7i I~ 7i p~ 7i q~7i\n", m,I,p,q),
gefch(),
if (nim I[I]) { I = I + m;}
65
whiIe ( I l~ 0 )
{iferosi ~ iferosi + I,
prinff("\niferosi ke-7d I ~ 7d I[7d] ~ 7d",iferosi,I,I,I[I]),
if ( nim - k[Ij )
{ if (q l~ 0) { I = I-q; t=p; p = q; q = t-q;}
eIse I ~ 0, }

eIse {if {nim - k[Ij)
{ if (p l~ I) { I = I+ q; p=p-q; q = q-p;}
eIse I ~ I,}
eIse {geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d",wokfu.fi_hour,
wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),
refurn,}
}
}
}

Coro ini songof jeIek koreno memerIukon wokfu yong Iomo. Iemungkinon ferjeIek odoIoh
memerIukon wokfu M+I, sehinggo wokfu yong diperIukon unfuk seorch odoIoh O{n},

Wokfu yong diperIukon unfuk seorch secoro umum : f{n} = O{ g{n} }
f{n} unfuk menyofokon compufing fime dori beberopo oIgorifhmo
O{n} disebuf wokfu Iineor
O{ Iog n } disebuf wokfu Iogorifmik, Iebih cepof dori wokfu Iineor.

b. INARY SEARCH

Merupokon metodu terbuik duIum seurch,
MemuIoi seorch dori Iokosi fengoh (MIDDLE). Iemudion berdosorkon isi dori
Iokosi difengoh fersebuf dopof diberikon 3 kemungkinon :

I. jiko X I[M] : informosi yong dicori odo dibogion bowoh dori Iokosi
middIe.
Z. jiko X ~ I[M] : record fengoh fersebuf odoIoh record yong dicori
3. jiko X I[M] : informosi yong dicori odo di bogion ofos dori Iokosi fengoh
(middIe)

Demikion seferusnyo sefiop sudoh difenfukon Iokosi fengoh, sompoi diperoIeh
record yong dicori.

Confoh : suofu urufon dofo dengon cocoh dofo M ~ I0.
Dofo fersebuf mempunyoi niIoi sebogoi berikuf :
record ke- :

I Z 3 4 b o 7 8 9 I0
7b IbI Z03 Z7b 300 489 bZ4 b9I o47 7Z7

Iogiko pencorion : cori record yong berniIoi Z7b

iferosi Iow high middIe compore

I I I0 b Z7b 300
Z I 4 Z Z7b IbI
3 3 4 3 Z7b Z03
4 4 4 4 Z7b ~ Z7b

Pencorion honyo memerIukon 4 Iongkoh ( iferosi )
Wokfu yong diperIukon podo 8inory Seorch ini odoIoh : O(Iog n)

66
void binury{void}
{ inf Iow, mid, high, I,
geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d",wokfu.fi_hour,wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),
Iow ~ I, high ~ n, I ~ I,
prinff("\niferosi Iow high mid"),

whiIe (Iow ~ high)
{ mid ~ (Iow + high)/Z,
prinff ("\n 7d 7d 7d 7d",I,Iow, high,mid),
gefch(),

if (nim I[mid])
{high ~ mid - I, I ~ I+I,}
eIse{if (nim I[mid]) {Iow ~ mid + I, I~ I+I,}
eIse {prinff("\n\nnim ~ 7i odo di posisi 7i\n",nim, mid),
geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d", wokfu.fi_hour,
wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),
refurn,}
}
}
}

c. FIONACCI SEARCH

Menggunokon coro seorch dengon memecoh subfiIe menuruf Fibonocci Sequence, yoifu
:

0, I, I, Z, 3, b, 8, I3, ZI, 34, ,,,,,,,,,,..

diperoIeh dori horgo owoI Fo ~ 0 don FI ~ I.
Fibonocci sequence : F
i
~ F
i -I
+ F
i - Z
, i ~ Z

keuntungunnyu :
doIom prosesnyo honyo menggunokon operofor perfombohon don pengurongon
sojo.
OIeh koreno ifu wokfu rofo-rofo seorch Iebih cepof dori 8inory Seorch yong
menggunokon pembogion doIom proses seorch-nyo.

Confoh : FiIe dofo sudoh doIom kondisi uruf

II Z3 3o 4Z b8 ob 74 87 94 99

record : I Z 3 4 b o 7 8 9 I0

coriIoh record yong berhorgo ob.

Diketuhui :

n ~ jumIoh record
~ I0

F
k
+ m ~ n + I odoIoh rumus unfuk mencori increomenf (ongko
perfombohon)
F
k
~ ongko Fibonocci

F
k
+ m ~ I0 + I
~ II
67
m ~ II - F
k

~ II - 8 ~ 3
dimono 8 odoIoh biIongon Fib. ferdekof dengon II

Longkoh-Iongkoh :
Tenfukon duIu F
k-I
, F
k-Z
don F
k-3


8iIo F
k
~ 8 i ~ F
k-I
~ b
p ~ F
k-Z
~ 3
q ~ F
k-3
~ Z

AIgorithmu :

void fibonoci(void)
{ unsigned inf fib[Zb],
inf I, p, q, m, j, f,
inf iferosi ~ 0,
geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d",wokfu.fi_hour,wokfu.fi_min,wokfu.fi_sec), prinff("\n"),
fib[0] ~ 0, fib[I] ~ I,
for( j ~ Z, jIb , j++)
{fib[j] ~ fib[j-I] + fib[j-Z],}
prinff("\n Fibonocci sequence : "),
for( j ~ 0, jIb , j++) {prinff("7i ", fib[j]),}
gefch(),
j ~ 0,
whiIe ( fib[j] ~ (n + I)) {j~ j+I,}
m ~ n + I - fib[j-I],
I ~ fib[j-Z],
p ~ fib[j-3],
q ~ fib[j-4],
prinff("\n\n m~ 7i I~ 7i p~ 7i q~7i\n", m,I,p,q),
gefch(),
if (nim I[I]) { I ~ I + m,}
whiIe ( I l~ 0 )
{iferosi ~ iferosi + I,
prinff("\niferosi ke-7d I ~ 7d I[7d] ~ 7d",iferosi,I,I,I[I]),
if ( nim I[I] )
{ if (q l~ 0)
{ I ~ I-q, f~p, p ~ q, q ~ f-q,}
eIse I ~ 0, }
eIse {if (nim I[I])
{ if (p l~ I) { I ~ I+ q, p~p-q, q ~ q-p,}
eIse I ~ I,}
eIse {geffime(&wokfu), prinff("\n"),
cprinff("7d:7d:7d",wokfu.fi_hour,
wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),
refurn,}
}
}
}
jiko X I[i] moko i ~ i + m
ELSE
Lokukon WHILE - DO biIo i 0 yong berisi
cose - of : I. X I[i] : jiko q ~ 0 moko i ~ 0
q 0 moko i ~ i - q, f ~ p
p ~ q, q ~ f-q
Z. X ~ I[i] : PETUPM
3. X I[i] : jiko p ~ I moko i ~ 0
p I , i ~ i + q, p ~ p - q
q ~ q - p
68
contoh :
Cori record yong berhorgo ob X ~ ob
i ~ b , p ~ 3 , q ~ Z
m ~ 3

Cek : ob I[i] yo, moko i ~ b + 3 ~ 8

mosuk WHILE-DO : cose - I : Q 0 i ~ i - q
~ 8-Z ~o
f ~ p ~ 3
p ~ q ~ Z
q ~ f - q
~ 3-Z ~ I
cose-Z : ob ~ I[o]

diperIukon Z iferosi ofou Ioop unfuk mendopofkon ob.

HASH TALE SEARCH

8erbedo dengon seorch sebeIumnyo , podo hosh fobIes seorch ini yong dicori doIom
fiIe bukon informosinyo (fidok menggunokon idenfifier fieId) fopi mencori oIomof ofou
Iokosi dori idenfifier yong diberikon.

Confoh : misoI okon dicori eIemen yong berisi X, moko oIomof X okon dihifung duIu
menggunokon FUNSSI HASH (Hosing Funcfion). Lokosi dori oIomof
fersebuf ferIefok doIom tubeI HASH {HASH TALE}, Hoshing Funcfion
(fx) , digunokon unfuk meIoksonokon fronsformosi podo suofu idenfifier X
kedoIom suofu oIomof yong odo doIom hosh fobIe.

Confoh : Hosh fobIe dengon Zo boris ('buckefs') don Z koIom ('sIof').
Idenfifier 0A, D, 0, L, AZ, AI don E okon di 'hosh' kedoIom
fobeI.

SIof-I sIof-Z

AI AZ f(A) ~ I

0 0 f(D) ~ 4

0 0 f(E) ~ b

D 0 f(0) ~ 7

E 0 dsf.

0 0 koreno hosh fobIe(I,I) sudoh di
,, ,,. Isi AI moko AZ disimpon di (I,Z)

Hosh fobIe biso diboyongkon sebogoi suofu mofriks yong sefiop borisnyo
mewokiIi idenfifier dori f(x). DiombiI huruf perfomo dori idenfifier X. 8oris
dibogi-bogi menjodi beberopo sIof ofou koIom dimono mosing-mosing koIom
berisi I record.

SORT

Operosi pengurufon (sorfing) odoIoh operosi yong songof bonyok diIokukon
doIom "usiness Dutu Processing",

69
Mucum-mucum Sort :
u, SeIecfion Sorf b, 8ubbIe Sorf c, Merge Sorf
d, Quick Sorf e, Heop Sorf

a. SELECTION SORT
AIgorifhmo : I. Pepeof Iongkoh Z.sd.3 sebonyok n-I koIi
Z. Cori indeks dori horgo ferkeciI/ferbesor
3. Tukorkon niIoi indeks perfomo dengon indeks ferkeciI/ferbesor yong odo
doIom eIemen Ioop
UMSOPTED PASS MUM8EP(I) SOPTED

j k
j
I Z 3 4 b o 7 8 9

I 4Z II II II II II II II II II II
Z Z3 Z3 Z3 Z3 Z3 Z3 Z3 Z3 Z3 Z3 Z3
3 74 74 74 3o 3o 3o 3o 3o 3o 3o 3o
4 II 4Z 4Z 4Z 4Z 4Z 4Z 4Z 4Z 4Z 4Z
b ob ob ob ob ob b8 b8 b8 b8 b8 b8
o b8 b8 b8 b8 b8 ob ob ob ob ob ob
7 94 94 94 94 94 94 94 74 74 74 74
8 3o 3o 3o 74 74 74 74 94 87 87 87
9 99 99 99 99 99 99 99 99 99 94 94
I0 87 87 87 87 87 87 87 87 94 99 99

void SELECTION _SORT{void}
{ PASS ~ I,
do { MIM_IMDEX ~ PASS,
I :~ PASS,
do { if (I[I] I[MIM_IMDEX])
{ MIM_IMDEX ~ I , I ~ I+ I,}
whiIe ( I M)
if ( MIM_IMDEX l~ PASS)
{ X ~ I[PASS], I[PASS] ~ I[MIM_IMDEX],
I[MIM_IMDEX] ~ X,}
PASS ~ PASS + I,}
whiIe (PASS ~~ M)
}



b. ULE SORT

AL0OPITMA :
I. Pepeof Iongkoh Z.sd.4 sebonyok n-I koIi
Z. Pepeof Iongkoh 3 unfuk eIemen yong beIum sorf
3. jiko currenf eIemen nexf eIemen, fukor
4. jiko fidok odo perfukoron, refurn
koIou fidok, kurongi ukuron dori eIemen yong beIum sorf.




UMSOPTED PASS MUM8EP(I) SOPTED

j k
j
I Z 3 4 b o

I 4Z Z3 Z3 II II II II
Z Z3 4Z II Z3 Z3 Z3 Z3
3 74 II 4Z 4Z 4Z 3o 3o
4 II ob b8 b8 3o 4Z 4Z
70
b ob b8 ob 3o b8 b8 b8
o b8 74 3o ob ob ob ob
7 94 3o 74 74 74 74 74
8 3o 94 87 87 87 87 87
9 99 87 94 94 94 94 94
I0 87 99 99 99 99 99 99

exc~o exc~4 exc~Z exc~I exc~I exc~0

void ULE_SORT{void}
{ LAST ~ M-I , PASS ~ I,
do { EXCHS ~ 0, L ~ I,
do { if (I[L] I[L+I])
{ X ~ I[L] ,
I[L] ~ I[L+I] ,
I[L+I] ~ X,
EXCHS ~ EXCHS + I,}
L ~ L+I,}
whiIe (L LAST)
if (EXCHS l~ 0)
{ LAST ~ LAST -I ,
PAST ~ PAST + I,}
eIse refurn(0):
whiIe (PASS ~~ M)
}

c. MERSE SORT
Menggunokon konsep " DIVIDE AND CONQUER "

AIgorifmo :
1. gobungkon sefiop koIi Z derefon ongko don Iokukon sorf ferhodop gobungon
ongko fersebuf.
2. UIongi sompoi diperoIeh Z derefon yong okon digobung menjodi I derefon
ongko yong sudoh sorf.

Procedure Merge sorf dijoIonkon unfuk dofo berikuf ini :

4Z Z3 74 II ob b8 94 3o 99 87 divide

Z3 4Z II 74 b8 ob 3o 94 87 99 I.sorf &
div
II Z3 4Z 74 3o b8 ob 94 87 99 Z.sorf &
div
II Z3 3o 4Z b8 ob 74 94 87 99 3.sorf &
div
II Z3 3o 43 b8 ob 74 87 94 99 4. sorf


d. QUICk SORT {PARTITION - EXCHANSE SORT}

Songof boik unfuk tubeI yung sungut besur.

utus buwuh dinyofokon dengon L (Low 8ond). utus utus dinyofokon dengon
U (Upper 8ound). Mempunyoi oIgorifmo sebogoi berikuf :

void QUICk_SORT{void}
{ FIog ~ " True",
if (L8 U8)
{ I ~ L8, J ~ U8 + I,
IEY ~ I[L8],
71
whiIe ( FLA0 ~~ "True")
{ I ~ I + I,
whiIe ( I[I] IEY)
{ I ~ I + I,}
J ~ J - I,
whiIe (I[J] IEY)
{ J ~ J - I, }
if (IJ) { X ~ I[I],
I[I] ~ I[J],
I[J] :~ X,}
eIse FLA0 ~ FALSE,
}
X ~ I[J], I[L8] ~ I[J], I[J] ~ X,
U = J-1;
QUICk_SORT{ };
L = J+1;
QUICk_SORT{ };
}

MisoI diberikon dofo sebogoi berikuf :
II IZ I3 I4 Ib Io I7 I8 I9 II0
( 4Z Z3 74 II ob b8 94 3o 99 87 )
( II Z3 3o ) 4Z ( ob b8 94 74 99 87 )

11 ( Z3 3o) 4Z (b8) (94 74 99 87 )

11 Z3 (3o) 4Z (94 74 99 87 )

11 Z3 3 4Z ( 87 74) 94 ( 99 )

11 Z3 3 4Z (74) 7 94 99

hosiInyo :
11 Z3 3 4Z 74 7 94 99

AIgorifmo didosorkon podo RECURSIVE APPROACH
1. bogi fobeI kedoIom subfobeI
2. gunokon QUICI_SOPT dengon bofos bowoh unfuk fobeI kiri
3. gunokon QUICI_SOPT bofos ofos unfuk fobeI konon

E, HEAP SORT

Longkoh-Iongkoh HEAP SOPT :
1. Creofe sebuoh heop dengon dofo yong sudoh difenfukon
2. Sofu per sofu pindohkon eIemen yong poIing besor don benfuk kemboIi sebuoh
heop ferhodop eIemen-eIemen sisonyo

Pohon Heup uduIuh pohon yung punyu sifut ukur Iebih besur duri unuk
kiri muupun unuk kunun,

Misal input data sebagai berikut :
4Z Z3 74 II ob b8 94 3o 99 87
Pembenfukon pohon heop, Iihof Iongkoh doIom fIowchorf dibowoh ini

STAPT

Q :~ Z fo M

I :~ Q
IEY :~ I[Q]
72
PETUPM J :~ TPUMC(I/Z)
I[I]:~IEY


I I . AMD. IEY I[J]



X :~ I[I]
I[I] :~ I[J]
I[J] :~ X
I :~ J
J :~ TPUMC(I/Z)



J I


J ~ I

okon ferbenfuk urufon pohon heop sebogoi berikuf :

Q ~ I Q~ Z Q ~ 3


4Z 4Z 74

Z3 Z3 4Z


Q ~ 4 Q ~ b Q ~ o


74 74 74

Z3 4Z ob 4Z ob b8

II II Z3 II Z3 4Z



Q ~ 7 Q ~ 8

94 94

ob 74 ob 74

II Z3 4Z b8 3o Z3 4Z b8

II
Q~9 Q ~ I0


99 99

94 74 94 74

ob Z3 4Z b8 ob 87 4Z b8

II 3o II 3o Z3

73

Longkoh-Iongkoh pengurufon :
diombiI niIoi ferbesor, doIom hoI ini odoIoh niIoi okor

Q = 10 : I[I0] ~ 99 Q=9 : I[9] ~ 94


94 87

87 74 ob 74

ob Z3 4Z b8 3o Z3 4Z b8

II 3o II


Q=: I[8] ~ 87 Q=7: I[7] ~ 74


74 ob

ob b8 3o b8

3o Z3 4Z II II Z3 4Z



Q = : I[o] ~ ob Q=: I[b] ~ 4Z


b8 4Z

3b 4Z 3b Z3

II Z3 II



Q=4: I[4] ~ 4Z Q=3: I[3] ~ Z3 Q=Z: I[Z] ~ Z3


3o Z3 II

II Z3 II


Sehinggo diperoIeh urufon doIom fiIe - I sebogoi berikuf :

II Z3 3o 4Z b8 ob 74 87 94 99
AIgorifmo HEAP_SOPT(I, M) :

1. 8enfuk pohon heop dengon procedure yong odo
2. Loksonokon sorf
uIongi .sd. Iongkoh I0, Q ~ M, M-I, ,,,.. , Z
3. Tukorkon niIoi record , I[I] I[Q]
4. 8erikon horgo owoI
I ~ I
IEY ~ I[I]
J ~ Z
5. Dopofkon index dori horgo ferbesor onok dori record boru
if ((J+I) Q )
74
{if (I[J+I] I[J]) {J ~ J+I,}
6. 8ongun kemboIi heop boru
UIongi sompoi dengon Iongkoh I0 opobiIo
( J (Q-I)) && (I[J] IEY)
7. Tukorkon horgo record : I[I] I[J]
8. Dopofkon onok kiri berikufnyo
I ~ J,
J ~ J + I,
9. Dopofkon index dori onok dengon horgo ferbesor berikufnyo
if ((J+I) Q }
{ if (I[J+I] I[J])
{ J ~ J+I,}
eIse {
if (J M) { J ~ M,)
10. Copykon record kedoIom fempofnyo yong cocok
I[I] ~ IEY
II. refurn
Progrom Sorf doIom bohoso C :

#incIude sfdio.h
#incIude sfdIib.h
#incIude sfring.h
#incIude conio.h
#incIude cfype.h
#incIude dos.h
#define n I0

void seIecfion_sorf(void),
void bubbIe_sorf(void),
void quick_sorf(),
void geffime(sfrucf fime ^pwokfu),
sfofic inf I[n+I] ~ { 0, 4Z, Z3, 74, II, ob, b8, 94, 3o, 99, 87},
inf nim, p,
inf uIong ~ 0,

moin() {
sfrucf fime wokfu,
inf piIih, k,
inf Ib~I, ub~I0,
CIr8orIoop:
{
cIrscr(), prinff("\n"),
gofoxy(33,Z),pufs("Cobo Sorf"),
gofoxy(I8,3),pufs("Iokukon exif duIu unfuk piIihon yong Ioin"),
gofoxy(Z8,o),pufs(" I. SeIecfion Sorf"),
gofoxy(Z8,8),pufs(" Z. 8ubbIe Sorf"),
gofoxy(Z8,I0),pufs(" 3. Quick Sorf"),
gofoxy(Z8,IZ),pufs(" 4. exif"),
gofoxy(33,Ib),prinff("PiIih : "), gofoxy(4I,Ib),sconf("7x", &piIih),

swifch(piIih) {
cose I: prinff("\n"), geffime(&wokfu),
cprinff("7Zd:7Zd:7Zd", wokfu.fi_hour, wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),
seIection_sort{};
prinff("\n\n"), geffime(&wokfu),
cprinff("7Zd:7Zd:7Zd", wokfu.fi_hour, wokfu.fi_min,wokfu.fi_sec),
gefch(), breok,

cose Z: prinff("\n"), geffime(&wokfu),
cprinff("7Zd:7Zd:7Zd", wokfu.fi_hour, wokfu.fi_min,wokfu.fi_sec),
75
prinff("\n"),
bubbIe_sort{};
prinff("\n\n"), geffime(&wokfu),
cprinff("7Zd:7Zd:7Zd", wokfu.fi_hour, wokfu.fi_min,wokfu.fi_sec),
gefch(), breok,

cose 3: prinff("\n"), geffime(&wokfu),
cprinff("7Zd:7Zd:7Zd", wokfu.fi_hour, wokfu.fi_min,wokfu.fi_sec),
prinff("\n"),
quick_sort {k Ib ub};
prinff("\n\n"),
for( k ~ I, k ~ n, k++) { prinff(" 7i ", I[k]), }
prinff("\n\n"),
gefch(),
geffime(&wokfu),
cprinff("7Zd:7Zd:7Zd", wokfu.fi_hour, wokfu.fi_min,wokfu.fi_sec),
gefch(), breok,
cose 4: exif(0), breok,
}
gofo CIr8orIoop,
}
}

void seIection_sort{void}
{inf poss, min_index, I , x,
inf iferosi~0,
poss ~ I,
do
{ min_index ~ poss,
I ~ poss,
do
{ if (I[I] I[min_index]) {min_index ~ I,}
I ~ I + I,
}
whiIe (I ~ n),
if (min_index l~ poss)
{ x ~ I[poss], I[poss] ~ I[min_index], I[min_index]~ x,}
poss ~ poss + I, iferosi ~ iferosi + I,
}
whiIe (poss n ),
prinff("\n dofo sorf :\n"),
for( poss ~ I, poss ~ n, poss ++)
{prinff(" 7i ", I[poss]),}
prinff("\n\n iferosi ~ 7d ", iferosi),
}

void bubbIe_sort{void}
{ inf Iosf, poss, exchs, L,
inf x, iferosi,j,
Iosf ~ n, poss ~ I, iferosi ~ 0,
do
{ exchs ~ 0,
iferosi ~ iferosi + I,
L ~ I,
do
{ if (I[L] I[L+I])
{x ~ I[L], I[L] ~ I[L+I], I[L+I] ~ x, exchs ~ exchs + I, }
L ~ L+I,
}
whiIe (L Iosf),
prinff("\niferosi ke - 7i : ", iferosi),
for( j ~ I, j n, j++) { prinff(" 7i ", I[j]), }
76
gefch(),
if (exchs ~~ 0) {breok,}
eIse
{ Iosf ~ Iosf -I, poss ~ poss + I,}
}
whiIe (poss n),
prinff("\n dofo sorf :\n"),
for( poss ~ I, poss n, poss ++) {prinff(" 7i ", I[poss]),}
}

void quick_sort{int k[j int Ib int ub}
{ chor fIog ~ I,
inf bowoh ~ Ib, ofos ~ ub,
inf I, J, Iey, X,
inf j,
if (bowoh ofos)
{ I ~ bowoh, J~ ofos + I, Iey ~ I[bowoh],
uIong ~ uIong + I,
whiIe (fIog ~~ I)
{ I ~ I+I,
whiIe (I[I] Iey)
{ I ~ I + I,}
J ~ J-I,
whiIe (I[J] Iey)
{J ~ J - I,}
if (I J)
{ X ~ I[I], I[I] ~ I[J], I[J] ~ X,}
eIse { fIog ~ 0,}
}
X ~ I[J], I[J]~ I[bowoh], I[bowoh] ~ X,

prinff("\niferosi ke - 7i : porfisi ~ I[7i]~ 7i ", uIong,J,I[J]),
prinff("\n bowoh :"),
for( j ~ bowoh, j ~ (J-I), j++)
{prinff(" 7i ", I[j]),}
gefch(), prinff("\n ofos :"),
for( j ~ (J+I), j ~ ofos, j++)
{prinff(" 7i ", I[j]),}
gefch(),
quick_sorf(I,bowoh,J-I),
quick_sorf(I,J+I,ofos),
}
}

Anda mungkin juga menyukai